Sharing recorded gameplay to a social graph

ABSTRACT

A method for sharing recorded gameplay of a video game to a social network, includes: executing, by a game console, a session of a video game; receiving, by the game console during the session of the video game, button input from a controller device that is interfaced with the game console; in response to receiving the button input, presenting, by the game console, a user interface configured to enable sharing of gameplay of the video game; receiving, by the game console via the user interface, one or more commands to share a video of at least a portion of the session of the video game to a social network, the video being recorded to a storage device during the session of the video game; sharing the video to the social network.

CLAIM OF PRIORITY

This application claims priority as a continuation of U.S. applicationSer. No. 15/133,066, filed Apr. 19, 2016, entitled “Sharing RecordedGameplay to a Social Graph,” which claims priority as a continuation ofU.S. application Ser. No. 13/839,382, filed Mar. 15, 2013, entitled“Sharing Recorded Gameplay to a Social Graph.”

U.S. application Ser. No. 13/839,382 claims priority to U.S. ProvisionalApplication No. 61/745,281, filed Dec. 21, 2012, entitled “AutomaticGeneration of Suggested Mini-Games for Cloud-Gaming Based on RecordedGameplay.”

U.S. application Ser. No. 13/839,382 claims priority as acontinuation-in-part of U.S. application Ser. No. 13/418,691, filed Mar.13, 2012 (now issued as U.S. Pat. No. 8,672,765), entitled “System andMethod for Capturing and Sharing Console Gaming Data.”

U.S. application Ser. No. 13/839,382 claims priority as acontinuation-in-part of U.S. application Ser. No. 13/418,703, filed Mar.13, 2012, entitled “System and Method for Capturing and Sharing ConsoleGaming Data.”

U.S. application Ser. No. 13/839,382 claims priority as acontinuation-in-part of U.S. application Ser. No. 13/418,720, filed Mar.13, 2012, entitled “System and Method for Capturing and Sharing ConsoleGaming Data.”

The disclosures of these applications are incorporated by referenceherein in their entirety for all purposes.

RELATED APPLICATIONS

This application is related to U.S. application Ser. No. 13/779,730,filed Feb. 27, 2013, entitled “Systems and Methods for Tagging Contentof Shared Cloud Executed Mini-games and Tag Sharing Controls.”

This application is related to U.S. application Ser. No. 13/779,735,filed Feb. 27, 2013, entitled “Systems and Methods for Ranking of CloudExecuted Mini-games Based on Tag Content and Social Network Content.”

This application is related to U.S. application Ser. No. 13/779,737,filed Feb. 27, 2013, entitled “Systems and Methods for Enabling ShadowPlay for Video Games Based on Prior User Plays.”

This application is related to U.S. Provisional Application No.61/746,478, filed Dec. 27, 2012, entitled “Systems and Methods forSharing Cloud-Executed Mini-Games, Challenging Friends and EnablingCrowd Source Rating.”

This application is related to U.S. Provisional Application No.61/745,543, filed Dec. 21, 2012, entitled “Cloud-Based Game SliceGeneration and Frictionless Social Sharing with Instant Play.”

The disclosures of these applications are incorporated by referenceherein in their entirety for all purposes.

BACKGROUND 1. Field of the Invention

The present invention relates to methods and systems for sharingrecorded gameplay to a social graph.

2. Description of the Related Art

The video game industry has seen many changes over the years. Ascomputing power has expanded, developers of video games have likewisecreated game software that takes advantage of these increases incomputing power. To this end, video game developers have been codinggames that incorporate sophisticated operations and mathematics toproduce a very realistic game experience.

Example gaming platforms, may be the Sony Playstation®, SonyPlaystation2® (PS2), and Sony Playstation3® (PS3), each of which is soldin the form of a game console. As is well known, the game console isdesigned to connect to a monitor (usually a television) and enable userinteraction through handheld controllers. The game console is designedwith specialized processing hardware, including a CPU, a graphicssynthesizer for processing intensive graphics operations, a vector unitfor performing geometry transformations, and other glue hardware,firmware, and software. The game console is further designed with anoptical disc tray for receiving game compact discs for local playthrough the game console. Online gaming is also possible, where a usercan interactively play against or with other users over the Internet. Asgame complexity continues to intrigue players, game and hardwaremanufacturers have continued to innovate to enable additionalinteractivity and computer programs.

A growing trend in the computer gaming industry is to develop games thatincrease the interaction between user and the gaming system. One way ofaccomplishing a richer interactive experience is to use wireless gamecontrollers whose movement is tracked by the gaming system in order totrack the player's movements and use these movements as inputs for thegame. Generally speaking, gesture input refers to having an electronicdevice such as a computing system, video game console, smart appliance,etc., react to some gesture made by the player and captured by theelectronic device.

Another growing trend in the industry involves the development ofcloud-based gaming systems. Such systems may include a remote processingserver that executes a game application, and communicates with a localthin client that can be configured to receive input from users andrender video on a display.

It is in this context that embodiments of the invention arise.

SUMMARY

Embodiments of the present invention provide methods and systems forsharing recorded gameplay to a social graph. It should be appreciatedthat the present invention can be implemented in numerous ways, such asa process, an apparatus, a system, a device or a method on a computerreadable medium. Several inventive embodiments of the present inventionare described below.

In one embodiment, a method for sharing recorded gameplay to a socialgraph is provided, including the following method operations: recordingvideo of a user's gameplay during an active state of a gameplay session;receiving a command to initiate a sharing operation during the activestate of the gameplay session; in response to receiving the command,entering a paused state of the gameplay session and presenting a sharinginterface; processing input received via the sharing interface todetermine a user-defined selection of the recorded video; sharing theuser-defined selection of the recorded video to a social graph of theuser; resuming the active state of the gameplay session; wherein themethod is executed by a processor.

In one embodiment, recording video of the user's gameplay includesstoring the video to a buffer during the active state of the gameplaysession.

In one embodiment, presenting the sharing interface includes retrievingand presenting one or more portions of the video from the buffer.

In one embodiment, the sharing interface includes a duration selectorfor defining a duration of the user-defined selection.

In one embodiment, sharing the selection includes uploading theselection for availability on a social network service that defines thesocial graph of the user.

In one embodiment, uploading the selection includes compressing theselection and uploading the compressed selection.

In one embodiment, sharing the selection includes generating anotification to a member of the social graph of the user.

In one embodiment, the notification is defined by one or more of aprivate message, a chat message, an in-game notification, a post to asocial news feed, an e-mail.

In one embodiment, sharing the selection includes presenting theselection on a profile page of the user.

In one embodiment, receiving the command to initiate the sharingoperation is defined from a button press on a controller device.

In another embodiment, a method for sharing recorded gameplay to asocial graph is provided, including the following method operations:recording video of a user's gameplay during an active state of agameplay session; receiving a command to initiate a sharing operationduring the active state of the gameplay session; in response toreceiving the command, determining a user-defined selection of therecorded video; sharing the user-defined selection of the recorded videoto a social graph of the user; wherein the method is executed by aprocessor.

In one embodiment, recording video of the user's gameplay includesstoring the video to a buffer during the active state of the gameplaysession.

In one embodiment, determining the user-defined selection of therecorded video includes retrieving and presenting the video from thebuffer, and processing user input identifying a portion of the video.

In one embodiment, sharing the selection includes uploading theselection for availability on a social network service that defines thesocial graph of the user.

In one embodiment, receiving the command to initiate the sharingoperation is defined from a button press on a controller device.

In another embodiment, a non-transitory computer readable medium havingprogram instructions defined thereon for sharing recorded gameplay to asocial graph is provided. The program instructions include: programinstructions for recording video of a user's gameplay during an activestate of a gameplay session; program instructions for receiving acommand to initiate a sharing operation during the active state of thegameplay session; program instructions for, in response to receiving thecommand, determining a user-defined selection of the recorded video;program instructions for sharing the user-defined selection of therecorded video to a social graph of the user.

In one embodiment, recording video of the user's gameplay includesstoring the video to a buffer during the active state of the gameplaysession.

In one embodiment, determining the user-defined selection of therecorded video includes retrieving and presenting the video from thebuffer, and processing user input identifying a portion of the video.

In one embodiment, sharing the selection includes uploading theselection for availability on a social network service that defines thesocial graph of the user.

In one embodiment, receiving the command to initiate the sharingoperation is defined from a button press on a controller device.

Other aspects of the invention will become apparent from the followingdetailed description, taken in conjunction with the accompanyingdrawings, illustrating by way of example the principles of theinvention.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention may best be understood by reference to the followingdescription taken in conjunction with the accompanying drawings inwhich:

FIG. 1A illustrates a user playing a cloud-based video game, inaccordance with embodiments of the invention.

FIG. 1B illustrates multiple users in multiple locations engaged ingameplay of cloud-based video games.

FIG. 2A illustrates a system for cloud gaming, in accordance with anembodiment of the invention.

FIG. 2B conceptually illustrates the accumulation of game titles acrossvarious generations of gaming consoles, in accordance with embodimentsof the invention.

FIG. 3 illustrates a method for providing game demos to a user, inaccordance with an embodiment of the invention.

FIG. 4A illustrates the hierarchical organization of various portions ofa videogame, in accordance with an embodiment of the invention.

FIG. 4B illustrates an interface for selecting a portion of a gameplaytimeline for generation of a minigame or game slice, in accordance withan embodiment of the invention.

FIG. 4C illustrates an interface for selecting a portion of a gameplaytimeline for generation of a minigame, in accordance with an embodimentof the invention.

FIG. 5 illustrates a series of screenshots demonstrating a method forgenerating a minigame from an existing cloud-based videogame, inaccordance with an embodiment of the invention.

FIG. 6 illustrates a system for generating game slice code, inaccordance with an embodiment of the invention.

FIG. 7A illustrates modification of a virtual space for purposes ofgenerating a game slice of a video game, in accordance with anembodiment of the invention.

FIG. 7B illustrates modification of a scene graph for purposes ofgenerating a game slice, in accordance with embodiments of theinvention.

FIG. 8 illustrates a method for generating a game slice, in accordancewith an embodiment of the invention.

FIG. 9A illustrates an interface for browsing game slices associatedwith various game titles, in accordance with an embodiment of theinvention.

FIG. 9B illustrates a game slice information page, in accordance with anembodiment of the invention.

FIG. 10 illustrates a view of a user's account information, includinglive views of friends in a cloud gaming social network, in accordancewith an embodiment of the invention.

FIG. 11 illustrates a method for presenting live gameplay feeds offriends of the current user, in accordance with an embodiment of theinvention.

FIG. 12 illustrates a system including a cloud gaming system and asocial network, in accordance with an embodiment of the invention.

FIG. 13 is a graph illustrating various game state variables over time,in accordance with embodiments of the invention.

FIG. 14A illustrates a method for generating a game slice for a lineartype videogame, in accordance with an embodiment of the invention.

FIG. 14B illustrates a method of generating a game slice for an openworld type videogame, in accordance with an embodiment of the invention.

FIG. 14C illustrates a method for generating a game slice for a sportsvideogame, in accordance with an embodiment of the invention.

FIG. 15 conceptually illustrates the formation of a multi-game slicegame, in accordance with an embodiment of the invention.

FIG. 16 conceptually illustrates the generation of a multi-game sliceminigame, in accordance with an embodiment of the invention.

FIG. 17 illustrates an interface for sharing gameplay, in accordancewith an embodiment of the invention.

FIG. 18 illustrates an interface 1800 for selecting a portion ofrecorded gameplay video for sharing, in accordance with an embodiment ofthe invention.

FIG. 19 illustrates an interface 1900 for viewing a live video stream ofa user's gameplay, in accordance with an embodiment of the invention.

FIG. 20 illustrates hardware and user interfaces that may be used toprovide interactivity with a video game, in accordance with oneembodiment of the present invention.

FIG. 21 illustrates additional hardware that may be used to processinstructions, in accordance with one embodiment of the presentinvention.

FIG. 22 is an exemplary illustration of scene A through scene E withrespective user A through user E interacting with game clients 1102 thatare connected to server processing via the internet, in accordance withone embodiment of the present invention.

FIG. 23 illustrates an embodiment of an Information Service Providerarchitecture.

DETAILED DESCRIPTION

The following embodiments describe methods and apparatus for sharingrecorded gameplay to a social graph.

It will be obvious, however, to one skilled in the art, that the presentinvention may be practiced without some or all of these specificdetails. In other instances, well known process operations have not beendescribed in detail in order not to unnecessarily obscure the presentinvention.

FIG. 1A illustrates a user playing a cloud-based video game, inaccordance with embodiments of the invention. As shown, a user U1 playsa cloud-based video game shown on a display 100. A cloud-based videogame is a video game that is primarily executed on a remote server. Aserver, in one embodiment, can include individual servers or serversthat are executed in a virtual machine data center, where many serverscan be virtualized to provide the requested processing. In theillustrated embodiment, cloud gaming server(s) 104 execute the videogame that is rendered on the display 100. A client 101 is situated atthe user's location to receive and process inputs and communicate theseto the cloud gaming servers 104, and also to receive video and audiodata from the cloud gaming servers 104. The client 101 and the cloudgaming servers 104 communicate over a network 102, such as the Internet.In other embodiments, the client can be any device, whether portable ornot, whether wireless or not, so long as the client can communicate witha network and provide access to a display for rendering game play andenable input from a user to drive interactivity. In one embodiment, theclient is a thin client. However, in other embodiments, the client canbe a general purpose computer, a special purpose computer, a gamingconsole, a personal computer, a laptop computer, a tablet computer, amobile computing device, a portable gaming device, a cellular phone, aset-top box, a streaming media interface/device, a smart television ornetworked display, or any other computing device capable of beingconfigured to fulfill the functionality of a client as defined herein.In one embodiment, the cloud gaming server is configured to detect thetype of client device which is being utilized by the user, and provide acloud-gaming experience appropriate to the user's client device. Forexample, image settings, audio settings and other types of settings maybe optimized for the user's client device.

In various embodiments, the degree of processing performed by the clientmay vary with respect to input and output processing. However, broadlyspeaking, the video game state is substantially maintained and executedon the cloud gaming servers 104, with the client primarily functioningto receive and communicate user inputs, and receive video/audio data forrendering. The client 101 may be a standalone device that is connectedto the display 100 and provides video data for rendering on the display100. In other embodiments, the client can be integrated into the display100. In one embodiment, the display 100 is a networked display providinga platform operating system for applications or “apps” utilizing thenetwork connectivity of the display. In such an embodiment, the clientcan be defined by an application executed on the platform provided bythe display's operating system.

FIG. 1B illustrates multiple users in multiple locations engaged ingameplay of cloud-based video games. The user U1 is shown at a firstlocation interacting with a video game rendered on the display 100.Users U2 and U3 are shown at a second location interacting with a videogame rendered on a display 106. A user U4 is shown at a third locationplaying a video game rendered on a display 108. Users U5, U6, and U7 areshown at a fourth location interacting with a video game rendered on adisplay 110.

At each of the first, second, third, and fourth locations, at least onecomputing device is provided for processing input from the various usersand rendering a cloud-based video game on their respective displays. Itshould be appreciated that the computing device can be integrated into adisplay, or may be a standalone device such as a personal computer, settop box, gaming console, or any other type of device having at least oneprocessor and memory for processing and storing data. The computingdevice can execute or define a client, as has been described above. Thecomputing devices are networked, and communicate over a network, such asthe Internet 102, with cloud gaming servers 104.

The cloud gaming servers 104 execute the various video games which arebeing played by the users, defining a given video game's game state frommoment to moment, and sending video data (including image data and audiodata) to a computing device at a particular location. The computingdevice at a given location processes input from the user(s) playing thevideo game, and transmits input data to the cloud gaming server, whichin turn processes the input data to affect the game state of the videogame. It should be appreciated that cloud-based gaming facilitatesmulti-player gaming from players located at different locations byproviding for execution of the video game at a remote server that isaccessible by all players over a network. In this manner, execution ofthe video game is not dependent on any single player's hardware ornetwork conductivity, though such will affect the user experience forthat given player.

FIG. 2A illustrates a system for cloud gaming, in accordance with anembodiment of the invention. As shown, a user 200 operates a controller202 to provide input to a cloud-based video game. The controller 202 caninclude any of various kinds of input devices, such as buttons,joysticks, a touchpad, trackball, and motion sensing hardware such asaccelerometers, and magnetometers, and gyroscopes. In one embodiment,the controller 202 can include an illuminated object that can be trackedto determine the location of the controller 202. The controller 202 cancommunicate wirelessly with a thin game client 204. The client 204communicates over a network 208 with a cloud gaming service 210. Theclient 204 processes data from the controller 202 to generate input datathat is communicated to a video game executed by the cloud gamingservice 210. Additionally, the client 204 receives video data from thecloud gaming service 210, for rendering on the display 206. In oneembodiment, the client 204 may process the received video data so as toprovide a video stream in a format compatible with the display 206. Inone embodiment, the client 204 can include a camera for tracking acontroller device or an object located on the controller device. As hasbeen noted, the object can be illuminated to further facilitate trackingbased on analysis of captured image frames from the camera.

The cloud gaming service 210 includes resources for providing anenvironment in which a video game can be executed. Broadly speaking,resources can include various kinds of computer server hardware,including processors, storage devices, and networking equipment, whichcan be utilized to facilitate execution of a video game application. Inthe illustrated embodiment, a video game library 212 includes variousgame titles. Each game title defines executable code as well asassociated data and asset libraries which are utilized to instantiate avideo game. The host 214 can be a single computing device that defines aplatform for instantiating virtual machines 216. In another embodiment,the host 214 can itself be a virtualized resource platform. In otherwords, the host 214 may operate over one or more server computingdevices, handling the allocation and usage of the resources defined bythe server computing devices, while presenting a unified platform uponwhich virtual machines 216 can be instantiated.

Each virtual machine 216 defines a resource environment which cansupport an operating system, upon which a video game application 218 canbe run. In one embodiment, a virtual machine can be configured toemulate the hardware resource environment of a gaming console, with anoperating system associated with the gaming console being run on thevirtual machine to support the running of game titles which weredeveloped for that gaming console. In another embodiment, the operatingsystem can be configured to emulate a native operating systemenvironment of a gaming console, though the underlying virtual machinemay or may not be configured to emulate the hardware of the gamingconsole. In another embodiment, an emulator application is run on top ofthe operating system of a virtual machine, the emulator being configuredto emulate the native operating system environment of a gaming consoleso as to support video games designed for that gaming console. It shouldbe appreciated that a variety of current and legacy gaming consoles canbe emulated in a cloud-based gaming system. In this manner, a user canaccess game titles from different gaming consoles via the cloud-gamingsystem.

When the user 200 requests to play a specific video game title, thevideo game title is retrieved from the library 212. If a compatiblevirtual machine has not been already instantiated or is not availablefor use, then a new compatible virtual machine is instantiated on thehost 214. The retrieved video game title is then executed as anapplication 218 on the available or newly instantiated virtual machine216. In one embodiment, this can entail determining the appropriateplatform for the video game title (e.g. which gaming console oroperating system the game requires to run) and assigning the video gametitle to an appropriate virtual machine for execution, e.g. one havingan emulator application capable of handling execution of the video gametitle. The executing video game communicates with the game client 204 toprovide an interactive gaming experience for the user 200. Morespecifically, the executing videogame application 218 receives inputdata from the client 204 over the network 208. The application 218processes the input data to update the game state of the executingapplication. As the game state changes, the application 218 outputsvideo data that is sent to the client 204 for rendering on the display206. Additionally, the application 218 may also output feedback data tothe client 204 that is utilized to provide an additional feedbackmechanism to the user. By way of example, the user's controller 202 mayinclude a tactile vibration feedback mechanism that can be activatedbased on the output feedback data from the video game application.

In one embodiment, the cloud gaming system is configured to detect thetype of client device associated with the user, and also a type ofcontroller available for the user to provide input to the cloud-basedvideo game. For example, in one embodiment, when a user logs in to thecloud gaming system, they may be presented with an option to designatethe type of client device with which they are accessing the cloud gamingsystem. In one embodiment, a series of client device options arepresented from which the user may select one corresponding to theirclient device. The user may also be presented with an option todesignate the type of controller device they will use to play a videogame. In one embodiment, a series of controller options can be presentedto the user, from which the user may select to designate a controllertype corresponding to their controller hardware. In other embodiments,the cloud gaming system can be configured to automatically detect theclient device type and/or the controller device type.

For example, at the time of login, the client device may sendinformation to the cloud gaming server identifying itself as well as aconnected controller device (e.g. in response to a request from thecloud gaming server). Based on this information, the cloud gaming servermay determine an appropriate video game output configuration and inputparameter configuration to provide a gaming experience optimized for theuser's client device and controller device. In one embodiment, a look-uptable is employed to determine video game configuration and inputparameter configuration based on a detected client device and a detectedcontroller device.

It should be appreciated that a given video game may be developed for aspecific platform and a specific associated controller device. However,when such a game is made available via a cloud gaming system aspresented herein, the user may be accessing the video game with adifferent controller device. For example, a game might have beendeveloped for a game console and its associated controller, whereas theuser might be accessing a cloud-based version of the game from apersonal computer utilizing a keyboard and mouse. In such a scenario,the input parameter configuration can define a mapping from inputs whichcan be generated by the user's available controller device (in thiscase, a keyboard and mouse) to inputs which are acceptable for theexecution of the video game.

In another example, a user may access the cloud gaming system via atablet computing device, a touchscreen smartphone, or other touchscreendriven device. In this case, the client device and the controller deviceare integrated together in the same device, with inputs being providedby way of detected touchscreen inputs/gestures. For such a device, theinput parameter configuration may define particular touchscreen inputscorresponding to game inputs for the video game. For example, buttons, adirectional pad, or other types of input elements might be displayed oroverlayed during running of the video game to indicate locations on thetouchscreen that the user can touch to generate a game input. Gesturessuch as swipes in particular directions or specific touch motions mayalso be detected as game inputs. In one embodiment, a tutorial can beprovided to the user indicating how to provide input via the touchscreenfor gameplay, e.g. prior to beginning gameplay of the video game, so asto acclimate the user to the operation of the controls on thetouchscreen.

In some embodiments, the client device serves as the connection pointfor a controller device. That is, the controller device communicates viaa wireless or wired connection with the client device to transmit inputsfrom the controller device to the client device. The client device mayin turn process these inputs and then transmit input data to the cloudgaming server via a network (e.g. accessed via a local networking devicesuch as a router). However, in other embodiments, the controller canitself be a networked device, with the ability to communicate inputsdirectly via the network to the cloud gaming server, without beingrequired to communicate such inputs through the client device first. Forexample, the controller might connect to a local networking device (suchas the aforementioned router) to send to and receive data from the cloudgaming server. Thus, while the client device may still be required toreceive video output from the cloud-based video game and render it on alocal display, input latency can be reduced by allowing the controllerto send inputs directly over the network to the cloud gaming server,bypassing the client device.

In one embodiment, a networked controller and client device can beconfigured to send certain types of inputs directly from the controllerto the cloud gaming server, and other types of inputs via the clientdevice. For example, inputs whose detection does not depend on anyadditional hardware or processing apart from the controller itself canbe sent directly from the controller to the cloud gaming server via thenetwork, bypassing the client device. Such inputs may include buttoninputs, joystick inputs, embedded motion detection inputs (e.g.accelerometer, magnetometer, gyroscope), etc. However, inputs thatutilize additional hardware or require processing by the client devicecan be sent by the client device to the cloud gaming server. These mightinclude captured video or audio from the game environment that may beprocessed by the client device before sending to the cloud gamingserver. Additionally, inputs from motion detection hardware of thecontroller might be processed by the client device in conjunction withcaptured video to detect the position and motion of the controller,which would subsequently be communicated by the client device to thecloud gaming server. It should be appreciated that the controller devicein accordance with various embodiments may also receive data (e.g.feedback data) from the client device or directly from the cloud gamingserver.

FIG. 2B conceptually illustrates the accumulation of game titles acrossvarious generations of gaming consoles, in accordance with embodimentsof the invention. In the video gaming industry, video games aredeveloped for specific video game consoles. Over time a library of gametitles is amassed for a specific game console. For example, in theillustrated diagram, a first generation console 220 has a collection ofgame titles 228 which have been developed for it. A second-generationconsole 222 has associated there with a collection of game titles 230which have been developed for it. And a third-generation console 224 isalso shown, having a collection of game titles 232 developed for it. Inother embodiments, there may be a collection of game titles 234 whichhave been specifically developed as cloud-based games for use inconjunction with a client 226. Furthermore, other types of games such asInternet games can be developed and collected for distribution over acloud gaming system, as is described herein. It will be appreciated thatgame titles from different generations of game consoles can be collectedand consolidated in the cloud gaming library 212. As shown, the library212 includes a first generation console library 236 which includes thegame titles which have been developed for the first generation console220. In a similar manner, the library 212 also includes asecond-generation console library 238 and a third generation consolelibrary 240 which contain video games that have been developed for thesecond and third generation consoles, respectively. Games which havebeen developed for the client 226 and other types of games such asInternet games can also be included in the game library 212. As can beseen, a large number of game titles from across various generations ofvideo gaming consoles can be amassed and made available via a cloudgaming library. As has been described, each of these games can beexecuted on a virtual machine that simulates the operating systemenvironment associated with a given gaming console for which a game wasdeveloped. In this manner, users accessing the cloud-based gaming systemare able to easily access and play games from across many differentconsoles as well as games from other contacts such as Internet games andgames which have been specifically developed for use with thecloud-based gaming system.

FIG. 3 illustrates a method for providing game demos to a user, inaccordance with an embodiment of the invention. An interface 300 isshown providing vignettes or icons 302, 304, 306, 308, 310, and 312 ofvarious game titles that are available for demoing. Each icon can beconfigured to provide an image indicative of the game that itrepresents. In one embodiment, when a user navigates to a given icon,the icon may be activated to show an animation or video clip that isrepresentative of the video game or which otherwise provides additionalinformation to the user about the content of the video game. In theillustrated embodiment, a user has navigated to the icon 302, which istherefore highlighted and displays an active animation showing a scenefrom the video game. When a user selects an icon, a preview video may beshown in accordance with method operation 314. If the user continues toselect the game at method operation 316, then at method operation 318,game code for the demo is launched. At method operation 320, the gamedemo is made available instantaneously for gameplay by the user. Itshould be appreciated that because the game demo is cloud based, it canbe made available instantaneously from a preloaded instantiation of thegame demo in the cloud-based system. When the game demo is launched, thepreloaded instantiation of the game demo is triggered to execute. Atmethod operation 322, it is determined whether the user wishes tocontinue gameplay of the game demo or play an additional demo of thevideogame, if one is available. If so, then the method returns tooperation 322 continued execution of the game demo or execute a new gamedemo for the videogame. If not, then at method operation 324, the useris presented with an option to purchase a mini version of the videogame.Additionally, at method operation 326 the user can be presented with anoption to purchase a full version of the videogame. If the user choosesto purchase either a mini version or a full version of the game, then atmethod operation 328 that version of the game is added to the user'saccount. It should be appreciated that because the games are madeavailable over a cloud-based gaming system, the addition of a game to auser's account may simply entail associating access privileges to thespecific version of the game with the user's account. Furthermore, oncepurchased, the game can be made available practically instantaneouslyfrom the cloud-based system for gameplay by the user, especially as thegame can be pre-instantiated in the cloud-based system.

FIG. 4A illustrates the hierarchical organization of various portions ofa videogame, in accordance with an embodiment of the invention. By wayof example, a videogame can be organized into various sections 400. Inthe illustrated embodiment, these may include a set up section, anintroduction section, various level sections, and an outro section. Agiven level may be further divided into various scenes. As shown, thelevel 3 section is broken down into various scenes 402. As the userplays through a given scene, a gameplay timeline of that scene can berecorded, including recorded video of the user's gameplay as well asrecorded input data and game states of the executed game application. Inthe illustrated embodiment, the gameplay timeline 404 as representativeof the users gameplay of scene 2 of level 3 of the game. In accordancewith embodiments of the invention, a user may select portions of theirrecorded gameplay from which to generate a mini game or game slice. Forexample, in the illustrated embodiment the gameplay timeline 404 has astart time T₀ and an ending time T_(z). a portion of the gameplaytimeline from a time T_(x) to a time T_(y) has been selected from whichto generate a minigame.

FIG. 4B illustrates an interface for selecting a portion of a gameplaytimeline for generation of a minigame or game slice, in accordance withan embodiment of the invention. In the illustrated embodiment, theinterface 412 is presented on a touchscreen 411 of a device 410. In oneembodiment, the device 410 is a tablet computing device. The interface412 includes a selectable gameplay timeline 414. In an expanded view 430of the gameplay timeline 414, it can be seen that in one embodiment thegameplay timeline 414 is represented as a film strip with adjustablemarkers 416 and 418. The marker 416 designates the start point along thegameplay timeline 414 of the selection, whereas the marker 418designates the endpoint along the gameplay timeline of the selection.Furthermore, a marker 419 can be positioned within the portion of thegameplay timeline 414 that has been founded by the start marker 416 andthe end marker 418. For ease of use and to provide the user with avisual understanding of what portion of their gameplay is beingselected, a start frame 420 can be shown corresponding to the pointalong the gameplay timeline at which the marker 416 has been positioned.The start frame 420 is an image of the recorded gameplay videocorresponding to the time at which the start marker 416 is positioned.Likewise, a representative end frame 424 can be shown corresponding tothe point along the gameplay timeline at which the marker 418 has beenpositioned. In a similar manner, the end frame 424 is an image of therecorded gameplay video corresponding to the time at which the endmarker 418 is positioned. Additionally, a representative frame 422 maybe displayed corresponding to the position of the marker 419 along thegameplay timeline. The representative frame 422 can be utilized as arepresentative image for the minigame that is created based on theselected portion of the gameplay timeline. It should be appreciated thatthough in the illustrated embodiment a touchscreen interface is providedand described, in other embodiments various other kinds of input can beutilized to select starting and ending points to define a portion ofgameplay for creation of a minigame. For example, input can be providedvia a game controller, a keyboard, via gesture input, voice input, andin accordance with other types of input devices and mechanisms so as toenable selection of a portion of gameplay along with selection of arepresentative image frame from the recorded gameplay video.

In some embodiments the selection markers may not be continuouslyadjustable along the gameplay timeline, but may be configured instead tosnap to predefined time points along the gameplay timeline. For example,predefined time points may be defined to correspond with specific eventsoccurring in the gameplay timeline. The specific events of a givengameplay timeline for which predefined time points will be assigned canbe generated based on analysis of the users gameplay, and will depend onthe specific architecture of the videogame gameplay. In one embodiment,predefined time points can be assigned based on geographical location ofa character within a virtual world defined by the videogame. Forexample, predefined time points can be assigned to the specific times atwhich a character moved from one geographical locale to anothergeographical locale, e.g. movement from one scene location to anotherscene location, movement from one city to another city, entering astructure, entering a room within a structure, entering the vehicle,entering a different type of environment, or any other kind ofgeographical transition of significance. In another embodiment,predefined time points can be assigned based on development of a user'scharacter or entity which is controlled in the videogame. For example,predefined time points can be assigned when a character or entitycontrolled by the user accomplishes a task, acquires a skill, acquiresan object, passes a level or otherwise completes a portion of thevideogame, or performs or achieves any other kind of significantactivity in the video game.

FIG. 4C illustrates an interface for selecting a portion of a gameplaytimeline for generation of a minigame, in accordance with an embodimentof the invention. A gameplay timeline 414 graphically illustrates atimeline along which the user may set start and end markers 416 and 418,so as to designate a selection of the gameplay from which to generate aminigame. A start frame 410 corresponding to the start marker's 416position is shown, as well as an end frame 424 corresponding to the endmarker's 418 position. It will be appreciated that the frames may beidentified from recorded video of the user's gameplay. A number ofcandidate frames 440, 442, 444, and 446 are presented, from which theuser may select one to be utilized as a representative frame for theminigame. The candidate frames can be determined according to a varietyof methods. For example, candidate frames may be presented fromfractional intervals of the selected portion of the gameplay timeline.The intervals can be equivalent, such that the candidate frames areequally spaced along the gameplay timeline, or the intervals may benon-equivalent, such that some frames are more proximate to each otherthan others along the gameplay timeline. In one embodiment, a higherdensity of candidate frames are generated from earlier portions of theselected portion of the gameplay timeline as compared to later portionsof the selected portion of the gameplay timeline. In one embodiment, ahigher density of candidate frames are generated from both early andlater regions of the selected portion of the gameplay timeline, whereasa lower density of candidate frames are generated from central portionsof the selected portion of the gameplay timeline.

After a user has selected a portion of gameplay from which to create aminigame, embodiments of the present invention provide for systems andmethods to create a playable minigame based on the selected portion ofgameplay. More specifically, the minigame enables another user to playsubstantially the same portion of the video game that the original userplayed, and possibly under substantially the same conditions andparameters. In this sense, the minigame is more than simply a replayvideo of the original user's gameplay (though a replay video clip of theoriginal user's gameplay may be presented in conjunction with theminigame), but is a playable portion of the video game itself that hasbeen designated based on user selection of their own gameplay. Asecondary user may thus experience a substantially similar gameplayexperience to that of the original user.

FIG. 5 illustrates a series of screenshots demonstrating a method forgenerating a minigame from an existing cloud-based videogame, inaccordance with an embodiment of the invention. Screenshot 500 shows thevideogame play of a user. In the illustrated embodiment, the user playsa level 3 of a videogame. At screenshot 502, the user has completedlevel 3 of the videogame. Upon completion of the level, the user isprovided with an option to generate a game slice or minigame based onthe user's gameplay of that level. When the user opts to generate a gameslice, then at screenshot 504 the user is presented with an interface toselect a starting point for the game slice from the user's recordedgameplay. As has been described, a representation of a gameplay timelinecan be shown with an adjustable slider which the user may move todesignate a starting point for the game slice. After the user hasdefined the start point, then at screenshot 506, the user is presentedwith the interface configured to allow selection of an endpoint for thegame slice. Again, an adjustable slider is moved by the user todesignate the endpoint along the representative gameplay timeline in theinterface. After the start and end points from the gameplay timeline ofthe user are designated, the game slice or minigame is generated by thesystem, as described elsewhere herein. At screenshot 508, the user canbe presented with additional options, such as an option to share thenewly created game slice with other users or otherwise inform otherusers of the newly generate game slice, an option to generate anothergame slice from the same gameplay timeline, an option to continuegameplay of the current videogame, an option to view the user's existinggame slices, etc. If the user selects to view their existing gameslices, then at screenshot 510, an interface is shown displaying theuser's previously created game slices. In the illustrated embodiment,the user can select one of the previously created game slices, and viewinformation and statistics related to that game slice, as shown atscreenshot 512. The information and statistics related to a given gameslice can include any of the following: a title of the game slice, thevideogame from which the game slice was originally created, the date thegame slice was created, the number of times the game slice has beenplayed by other users, a completion percentage indicating an averagepercentage of the game slice that is completed by users who undertake toplay the game slice, comments left by other users, etc.

Though in the currently described embodiment, an option to generate agame slice is presented to a user following completion of a level of thevideogame, it should be appreciated that in other embodiments the usercan generate a game slice at any other time during or outside ofgameplay of the videogame, provided that recorded gameplay of thevideogame exists from which a selection may be defined by the user for agame slice. For example, in one embodiment an interface can be presentedwhich provides access to various recorded gameplay from various videogames that are associated with the user. The user may select gameplay ofa specific videogame and generate a game slice by selecting a portion ofthe recorded gameplay from which to generate the game slice inaccordance with embodiments described herein.

FIG. 6 illustrates a system for generating game slice code, inaccordance with an embodiment of the invention. The terms game slice andminigame are used interchangeably herein to define a discreet andplayable portion of a videogame that is generated based on userselection from existing recorded gameplay. In the illustratedembodiment, the user gameplay 600 conceptually represents a userinteracting with a full version of a videogame. Main game code 602 isexecuted to define the full version of the videogame displayed by theuser. As the video game is played, it generates various types ofgameplay output, including video data, game state data, and user inputdata. These can be recorded so as to define the user's recordedgameplay. In the illustrated embodiment, an image stream 604conceptually represents the video data output by the videogame. Gamestate metadata 606 and user input data 608 are also shown. The gamestate data 606 includes data defining the game state of the executingvideogame from moment to moment during gameplay. Game state data caninclude the values of any variables which define the execution state ofthe videogame. The user input data is data generated by capturing userinitiated actions occurring during interactivity with the videogame,such as may be provided via activation of input devices on controllerdevices, detection of sensor data (e.g. motion sensors), captured audioinput, and the like.

As has been described, a user interface can graphically depict theuser's recorded gameplay to facilitate selection by the user of aportion of the user's gameplay from which to generate a game slice. Inthe illustrated embodiment, the user has defined a selection 610 fromtheir recorded gameplay. This selection of the user's recorded gameplayis utilized by a game slice generator to generate game slice code 622which defines a limited game based on the selected portion of the user'sgameplay. The game slice generator 612 includes a game state analyzer614 which analyzes the game state of the recorded selection 610. Basedon the analysis of the game state of the recorded selection, a gamebreakpoint processor determines appropriate breakpoints to define thebeginning and ending of the game slice. Breakpoints can be defined basedon geography, time, task or goal accomplishment, scene boundaries(physical or temporal), or any other aspect of a video game according towhich the video game's gameplay can be segmented to generate a gameslice. A brief description of some illustrative embodiments will serveto highlight certain possibilities for breakpoint determination.

For example, some video games entail control of a character that can bemoved from one geographic scene or locale to another scene or locale.The selected portion of the user's gameplay may be determined to begenerated from gameplay at a particular scene. In such an embodiment,the boundaries of the particular scene can define the geographicbreakpoint for the game slice, selecting the scene to the exclusion ofother scenes, which can entail exclusion of other adjacent or adjoiningscenes, as well as scenes which are non-adjacent or non-adjoining orotherwise less related or unrelated to the particular scene. It shouldbe appreciated that the recorded gameplay selection 610 may entailgameplay from multiple scenes, in which case, the game breakpointprocessor 616 may be configured to define breakpoints according to theboundaries of the multiple scenes which are utilized for the recordedgameplay selection.

It should be noted that a scene can be both geographic and temporal innature. That is, the scene may not only define a geographic regionwithin a virtual space defined by the video game, but may also beconfigured to exist during a certain time or at a particularchronological point within the larger context of the video game. Such ascene may have defined objectives or goals that are to be accomplishedby the player. Thus, game breakpoints can be defined based on chronologyor other temporal aspects as defined by the video game.

Furthermore, a given scene may have associated objects or features whichare presented as part of the scene during gameplay. These objects orfeatures may be analyzed to define further breakpoints according totheir inclusion. For example, the objects in the scene may be taken froma subset of an asset library, in which case the subset of the assetlibrary can be defined for the game slice by the game breakpointprocessor 616, to the exclusion of other objects in the asset librarywhich are not utilized in the scene(s) associated with recorded gameplayselection. It should be understood that objects and features can bedynamic elements of a given scene, with associated mechanisms definingtheir change in response to events occurring in the video game. Forexample, an object might have a damage modeling module that determinesand adjusts the appearance of the object when it is damaged (e.g. whenstruck by a weapon). Or a feature could be a vehicle that is madeavailable during the scene, with the vehicle having associated logicwhich defines its appearance during gameplay as well as its operationand response to user input. Such logic or damage modeling can furtherdefine game breakpoints for generation of the game slice.

Various aspects of a video game which define or are otherwise utilizedfor a selected portion of a video game can be the basis for defining agame breakpoint. The presently described examples are provided by way ofexample only and not by way of limitation. It should be appreciated thatin other embodiments, other aspects of a video game can form the basisfor defining breakpoints to generate a game slice.

In one embodiment, a video game may be organized into various sceneswhich must be completed in a linear fashion, such that a later scenecannot be attempted until its preceding scene has first been completed.Each scene can include a number of objectives or goals, some of whichmay be required for completion of the scene, and some of which may beoptional for completion of the scene. Objectives can include navigatingfrom a starting location to a predefined ending location within thescene, surviving for a predefined length of time, destroying apredefined number of enemies, acquiring a certain number of points,defeating a particular enemy, or any other activity which can define anobjective within the game. A scene may have various predefinedcompletion points, that is, points wherein the user, once havingachieved the completion point, is able to return to that point if theuser becomes unable to continue gameplay for some reason (e.g. userquits the game, the user's game character dies or runs out of lives orhealth, user's vehicle crashes, etc.). At predefined completion points,a video game may be configured to automatically save the user'sprogress, or present an option for the user to save their progress.

In one embodiment, the game breakpoint processor 616 is configured todefine a game breakpoint at predefined completion points. In oneembodiment, this is accomplished by finding the nearest completionpoints to the selected start and end points of the user's recordedgameplay selection, and utilizing these nearest completion points todefine the game breakpoints for the game slice. In another embodiment,the nearest completion point occurring before the selected start pointof the recorded gameplay selection is utilized to define a startingbreakpoint, whereas a nearest completion point occurring after theselected end point of the recorded gameplay selection is utilized todefine an ending breakpoint for the creation of the game slice. In stillanother embodiment, if a completion point lies within a predefinedradius of (e.g. either before or after) either of the start or endpoints of the user's recorded gameplay selection, then that completionpoint is utilized to define a corresponding start or end game breakpointfor the game slice. Whereas if no completion point lies within thepredefined radius, then a game breakpoint is defined that more closelymatches the user's selected start or end point for the recordedselection. In other embodiments, the predefined radius for the start andend points may differ for purposes of determining whether to utilize anexisting completion point to define a game breakpoint.

As has been discussed, the game breakpoint processor 616 determinesappropriate breakpoints applicable to various aspects of the videogamebased on analysis of the users recorded gameplay selection. Thebreakpoints defined by the processor 616 serve to define the limitedscope of the game slice that will be produced based on users recordedgameplay selection. In one embodiment, an overlay processor 617 isprovided for generating overlays that may contribute to an improved userexperience when playing the game slice generated by the game slicegenerator 612. For example, in one embodiment the overlay processor 617defines pre-game slice data which defines video or gameplay oradditional information that can be provided as an introduction to thegame slice prior to actual gameplay of the game slice. One example ofpre-game slice data is an introductory video which can provide contextto a user who initiates gameplay of became slice. In another embodiment,pregame slice data can define introductory gameplay for the game slice,that may provide a user an opportunity to learn skills that may beuseful or required for playing game the slice. In another embodiment,pregame slice data may define a series of one or more informationalscreens or images which provide information about the game slice to theuser. Such information may include controller configuration, storybackground information, objectives or goals, maps, or any other type ofinformation relating to the game slice which may be useful for the useror otherwise improve the user's experience of playing the game slice.

The overlay processor 617 can also be configured to define postgameslice data. In some embodiments, the postgame slice data can definevideo or images to be shown following completion of game play of thegame slice. For example, a congratulatory video might be shown after auser completes the game slice. Such a video may be customized based onthe user's gameplay of the game slice, for example, by showinginformation or images that are based on the user's gameplay. In oneembodiment, the postgame slice data can define a playback mechanism toplay recorded portions of the user's gameplay of the game slicefollowing its completion. In another embodiment, the postgame slice datacan be configured to display statistics about the users gameplay of thegame slice, and may indicate a comparison of the users gameplay to thatof other users or that of the original creator of the game slice. Instill other embodiments, the postgame slice data can define additionalinteractive elements to be presented to the user upon completion of thegame slice. These may include options to purchase in part or in wholethe video game upon which the game slice is based, redirect options toadditional sources of information relating to the videogame, etc.

In some embodiments, the overlay processor 617 can be configured todefine elements which are overlaid into the game slice. These mayinclude elements that may be customized by a user playing the gameslice, such as customization of characters, objects, properties, andother types of customization options. In some embodiments, the overlayprocessor 617 may be configured to define simplified elements for a gameslice so as to reduce the complexity of the game slice code and theamount of resources required to execute the game slice. By way ofexample, many video games include artificial intelligence (AI) entitiessuch as characters, vehicles, enemies, etc. These AI entities may in thefull videogame be governed by artificial intelligence models that definethe reaction and activity of the AI entities based on events occurringin the videogame. However, in the context of a game slice which is oflimited scope, it may be acceptable to simply define the activity of anAI entity through hardcoded definition or simplified extrapolations,rather than fully modeling the activity of the AI entity as would be thecase in the full videogame.

For example, if in the recorded gameplay selection of the full videogamea given AI character moves in a certain manner according to its AI modelthat is unlikely to change in the game slice, then it may be moreefficient to define an approximation of the AI character's movement forthe game slice. Such an approximation would not require the full AImodel to be included as part of the game slice code, yet would provideto the user playing the game slice a substantially similar experiencewith respect to that AI character to that of the original user'sgameplay from which the game slice was generated. The resource savingsrealized through approximation of AI entities activity can be even moresignificant when multiple AI entities are present and interacting in theuser's recorded gameplay selection. For each of the AI entities may haveAI models that depend upon the output of those of the other AI entities.However, when gameplay has been recorded the activity of each of theseAI entities is known, and therefore can be reproduced in the game slicethrough simplified mechanisms such as direct encoding of theircontrolling variables and approximation of their activity.

With continued reference to FIG. 6, a game set up state processor 618 isprovided for defining an initial state of the game slice. Based on theoperation of the game state analyzer 614, the game breakpoint processor616, and the game set up state processor 618, a code assembly manager620 assembles various code portions to define the game slice code 622.When the game slice code 622 is executed, user gameplay 624 providesinput to define the state of execution of the game slice code, whichproduces gameplay output including video data and feedback data forrendering the game slice to the user. The video data can include pregameslice overlay video 622, game slice video 624 which is the videoresulting from gameplay of the game slice, and postgame slice overlayvideo 626.

It should be appreciated that in one embodiment, the game slice code 622is fully self-contained, including all code portions which are requiredto execute the game slice. However, in other embodiments, the game slicecode 622 may incorporate references or pointers to existing codeportions in the main game code of the full video game. Furthermore, thegame slice code 622 may include reference or utilize existing assets inasset libraries of the main game code of the full video game. However,in other embodiments, new asset libraries can be generated for the gameslice code.

FIG. 7A illustrates modification of a virtual space for purposes ofgenerating a game slice of a video game, in accordance with anembodiment of the invention. The map 700 represents a scene or ageographical portion of a video game. The map as shown is atwo-dimensional representation that may be representative of athree-dimensional virtual space that is navigated and experienced duringactual gameplay of the video game. As shown, the map 700 illustrates aregion 702, and several paths 704, 706, 708, and 710. In the recordedgameplay of the video game, a user's character 712 moves from the region702 to the path 710. Based on this recorded movement and other analysisof the gameplay of the video game, it may be determined that theadditional paths 704, 706, and 708 are not necessary for generation ofthe game slice. The paths may represent incorrect choices as compared tothe path 710, or may lead to areas that are not relevant to the gameslice, or may detract from a game slice player's ability to follow thepath and experience similar gameplay to that of the original user.Further, if the areas to which the paths 704, 706, and 708 lead are notto be supported in the game slice, then the inclusion of such pathscould cause confusion among players, or at the least be a poor userexperience. Therefore, in a modified map 720, the paths 704, 706, and708 are made unavailable for gameplay in the game slice, whereas thepath 710, as well as the region 702 remain unchanged. Thus, when a userplays the game slice that incorporates the topography defined by the map720, he will experience a virtual space wherein the paths 704, 706, and708 are not available to traverse. The user will then be more likely totraverse the path 710 as the original user did, thus experiencingsimilar gameplay.

It will be appreciated that the portion of a virtual space defined for agame slice or minigame can be defined by boundaries which are determinedbased on the user's recorded gameplay. The boundaries will define asub-region of the larger virtual space, and include a subset of thefeatures which are available in the larger virtual space. In someembodiments, virtual space boundaries can be determined by determininglocations in the virtual space defined by the user's gameplay, and thendetermining predefined boundaries associated with the virtual space thatare nearest to those locations and arranged so as to encompass them. Forexample, a user's gameplay may define a path traversed by a user's videogame character. This path can be analyzed, and based on the path'slocation in the virtual space, a set of predefined boundaries can beselected so as to define a region encompassing the path. In someembodiments, predefined boundaries can be defined by specific featureswhich inherently define portions of the virtual space, e.g. doors,windows, walls, rooms, hallways, fences, roads, intersections, hallways,etc.

FIG. 7B illustrates modification of a scene graph for purposes ofgenerating a game slice, in accordance with embodiments of theinvention. A scene graph 730 conceptually illustrates the organizationof various scenes A through G of a video game. It should be appreciatedthat scenes as described herein can be geographic and/or temporal innature, and each may represent a playable portion of a videogame, suchas a stage, a level, a section, a location, or any other organizationalunit within the videogame according to which a player may progress fromone scene to another scene. In the scene graph 730, various nodes areshown representative of the scenes A through G. As shown, a player mayprogress from scene A to scene B, and from scene B to either of scenes Dor E. The player may also progress from scene A to scene C, and fromscene C to either of scenes F or G. The scene graph 730 is illustrativeof the scene organization of the full video game. However, for purposesof creating a game slice, not all of the available scenes may berequired to the game slice. Thus, by way of example, a scene graph 732illustrates the organization of scenes for a game slice. As shown, thescene graph 732 includes scenes A, B, C, and F, but not the remainingscenes which were included in the scene graph 730 of the full videogame. Thus, a user may progress from scene A to either of scenes B or C,and from scene C to scene F. However, the other scenes from the fullvideo game scene graph 730 are not available for gameplay in the gameslice. As has been described, systems in accordance with embodiments ofthe invention can be configured to limit the inclusion of scenes whengenerating a game slice. In this manner, the game slice does not includescenes which are not required for the limited context of its gameplayand intended purpose.

FIG. 8 illustrates a method for generating a game slice, in accordancewith an embodiment of the invention. At method operation 800, a usersgameplay of a videogame is recorded, including recording of video of theusers gameplay and videogame data such as input data and game state dataof the videogame. At method operation 802, a user interface is presentedfor selection of recorded gameplay to generate a game slice. Theinterface defines mechanisms for receiving user input to define startand endpoints from the recorded gameplay. For example, an interface forreviewing the recorded gameplay video can be provided so as to allow theuser to define start and endpoints within the gameplay video based onnavigation or playback of the gameplay video. At method operation 804,the user-defined selection of gameplay video is received. At methodoperation 806, videogame breakpoints are identified based on thereceived user-defined selection of gameplay video. In one embodiment,there are predefined breakpoints for the videogame. Based on theuser-defined selection of gameplay video, the game breakpoints which arenearest to the start and end points of the user-defined selection can bechosen as the game breakpoints for the game slice to be generated. Atmethod operation 808, the game code is defined for the slice selectionas defined by the identified breakpoints. That method operation 810, thegame set up state is defined for the slice selection. In one embodiment,the game set up state is based on a game state which existed during theuser's recorded gameplay. Method operation 812, the game slice code isgenerated, and at method operation 814, the game slice code is stored toa game slice library and associated with the user's account.

In one embodiment, the method can include method operation 816, whereinsuggested game slice video selections are generated based on therecorded gameplay video and data of the user. Suggested selections ofthe users gameplay can be determined based on analysis of the recordedgameplay of the user. For example, portions of the gameplay wherein ahigh level of activity (e.g. a level of activity exceeding a predefinedthreshold) is detected might be suggested as possible game slice videoselections. At method operation 818, the aforementioned user interfacefor game slice selection can present the suggested game slice videoselections to the user. In one embodiment, a screenshot representativeof each suggested game slice video selection can be presented to theuser. At method operation 820, a selection by the user of one of thesuggested game slice video selections is received. Based on the userselection, the game slice code can be generated and stored as haspreviously been described.

FIG. 9A illustrates an interface for browsing game slices associatedwith various game titles, in accordance with an embodiment of theinvention. In the illustrated embodiment, the interface is organizedinto a series of tabs, including tabs 900, 902, and 904, which whenselected provide access to various pages corresponding to different gametitles. In the illustrated embodiment, the tab 900 is currentlyselected, such that the presented page provides information about gameslices which have been created for a particular game title T1. A gameslice listing 904 lists the various game slices which have been createdfrom the game title T1. In one embodiment, the game slice listing 904also identifies the user who created the game slice (e.g. displaying ausername of the user who created the game slice). In one embodiment, thegame slice listing 904 can be browsed or navigated so as to highlightdifferent ones of the game slices listed in the game slice listing 904.In the illustrated embodiment, a game slice A created by a user A iscurrently highlighted, which causes details 906 to be displayed whichrelate to the game slice A. The details 906 can include various kinds ofinformation related to the game slice, such the level or stage fromwhich the game slice was generated, a game detail which provides morespecific information about the location from which the game slice wascreated, comments by the user A who created the game slice, a number ofcomments from others, a number of times the game slice has been played,or any other type of information about the game slice which can beprovided when the listing of the game slice is highlighted.

FIG. 9B illustrates a game slice information page, in accordance with anembodiment of the invention. The game slice information page is for thegame slice A discussed with reference to FIG. 9A, and can be reachedwhen the user selects the listing of the game slice A as shown in FIG.9A. With continued reference to FIG. 9B, the game slice information pageprovides various kinds of information related to the game slice. Inaddition to bibliographic information about the game slice (e.g. title,username of user who created the game slice, date of creation, etc.),there may be displayed a video 910 of the game slice. In one embodiment,the video 910 is the recorded gameplay video of the original user whocreated the game slice. In another embodiment, the video 910 could berecorded gameplay video of other users, such as a user who achieved thehighest score on the game slice, or a user who most recently played thegame slice. In one embodiment, the video 910 could be a live feed of auser who is currently playing the game slice. In other embodiments,instead of a video a representative image of the game slice could beshown.

The game slice information page can further include a selectable button912 for initiating gameplay of the game slice. The game sliceinformation page can also include a details section 914, which canfeature various details and statistical information about the gameslice, such as the number of plays, the average completion rate, etc.The game slice information page may also include a comments section 916,featuring comments left by users. A sort button 918 can be provided toselect various options for sorting the comments (e.g. chronologicalorder, reverse chronological order, most popular, by rating, byrelationship to the current user (e.g. comments by friends of the userin a social graph are prioritized), etc.)

FIG. 10 illustrates a view of a user's account information, includinglive views of friends in a cloud gaming social network, in accordancewith an embodiment of the invention. A library section 1002 displaysvarious game titles in the user's library. These may be game titleswhich the user has purchased or otherwise acquired. Display of a gametitle can include display of representative graphics, in addition totitle information. It will be appreciated that games can be full versiongame titles, but can also be mini versions of limited versions, each ofwhich may be a portion of a full version game title or be limited insome capacity as compared to the full version game title. A friendslisting 1004 lists friends of the current user in a social networkassociated with the cloud gaming system (i.e. other users in the socialgraph of the current user). The social network can be a social networkthat is specific to the cloud gaming system, or may be (third party)social network that exists apart from the cloud gaming system, withwhich the cloud gaming system communicates to obtain information aboutthe user's social graph. The friend listing 1004 can include additionalinformation about the user's friends, such as depicting games which areowned by each friend, identifying an online status of the friend (e.g.online, offline, inactive, etc.), the friend's last login and itsduration, the last game played by the friend, etc.

In one embodiment, a live active user section 1006 provides live viewsof the gameplay of friends who are currently online and may be playing avideo game. In one embodiment, each user has an option to define whetheror not to make their live gameplay available for live viewing by otherusers. In such an embodiment, live views are presented only from thoseusers who have the option designated to allow their live gameplay to beviewable by other users. In the illustrated embodiment, the live activeuser section 1006 includes a live view 1008 of the current gameplay of afriend A, as well as a live view 1010 of the current gameplay of afriend B. In one embodiment, the current user can navigate or browse thefriends of the friends listing 1004 and/or browse the live views whichare available in the live active user section 1006. In one embodiment, alive view can be highlighted when the current user navigates to it, andmay be rendered in a manner distinct from other live views. For example,live views might be displayed in a desaturated color scheme by default,but be displayed in a fully saturated color scheme when highlighted orselected. Live views might also be displayed at a lower resolution,framerate, or size by default, but when selected be displayed at ahigher resolution, framerate, or size. In this manner, bandwidth can beallocated to a specific live view based on user selection, to present alive view that the user is interested in viewing with greater fidelitythan other live views that may be active simultaneously. It should beappreciated that the live view may display not just specific gameplay ofa video game, but also other activity of a friend on the cloud gamingsystem, such as their navigation through menus or other types ofactivity related to their cloud gaming session.

In one embodiment, live views are available only for those users who arecurrently actively engaged in gameplay of a video game. In other words,no live view of a given user is available when that user is eitheroffline, or online but not actively engaged in gameplay of a video game.Thus, when a user is performing other non-gameplay activity on the cloudgaming system (e.g. navigating a graphical interface of the cloud gamingsystem while logged in to the system), such activity is not madeavailable in a live feed for others to view. In another embodiment, thelive view can include all activity of a user who is logged in to thecloud gaming system, including both gameplay of the user as well asother non-gameplay activity.

In one embodiment, the live view of a given user can be filtered so asnot to expose potentially sensitive or personal information for view byothers. For example, the cloud gaming system may support a chatfunction. As some users may wish for their chats to remain private, anoption can be provided to exclude chat logs when presenting a live view.It should be appreciated that a chat function can be implemented duringgameplay activity as well as during non-gameplay activity, and may befiltered out of live views of either or both of these circumstances. Inanother embodiment, aspects of a video game might be filtered out of alive view. For example, a user may wish to keep certain user-definedsettings secret as they may confer an advantage to that user duringgameplay. Thus, an option may be provided for activity related tosettings to not be displayed as part of the live feed (e.g. when a useraccesses a settings interface of the video game). In another embodiment,the live view can be configured to prevent viewing of personalinformation (e.g. preventing viewing when a user accesses a personalinformation page, enters payment information, enters a password, etc.).

In one embodiment, the interface provides an option to the primary userto request to join the gaming session of a secondary user who iscurrently online. For example, the primary user may view the secondaryuser's live gameplay feed and wish to join the secondary user'sgameplay. In one embodiment, activation of the option sends a request tothe secondary user notifying the secondary user that the primary userwishes to join their session. If the secondary accepts the request, thena multiplayer mode of the video game is initiated, facilitatingmultiplayer gameplay by the first and second users. In anotherembodiment, two or more secondary users may already be engaged inmultiplayer gameplay. In such an embodiment, the primary user can send arequest to join the multiplayer gameplay. Upon acceptance of the requestby one of the secondary users (e.g. a designated host of the gameplaysession), the primary user is able to join the multiplayer session ofthe video game. It should be appreciated that the aforementionedinterface showing live gameplay feeds of secondary users facilitates theprimary user joining the gameplay of secondary users after being able tosee their gameplay.

In one embodiment, the option to request to join the gameplay of thesecondary user is predicated upon determination of an ownership statusof the video game by the primary user. If the primary user does not ownthe video game, then no option may be presented, whereas if the primaryuser owns the same video game as the secondary user, then the option torequest to join the gameplay of the secondary user is made available aspart of the interface. In one embodiment, when the primary user isdetermined to not be an owner of the video game, then the primary usermay still join the gameplay of the secondary user in a multiplayer mode,but in a limited capacity, such as being limited in terms of duration ofgameplay, available scenes/levels/stages/etc., customization options,abilities, skills, weapons, characters, vehicles, or any other aspect ofthe video game that may be limited. In one embodiment, followinggameplay of the limited version of the video game, the primary user isprovided an option to purchase the video game in full. In anotherembodiment, the primary user is provided an option to purchase anadditional portion of the video game.

With continued reference to FIG. 10, the displayed information can alsoinclude the game history information 1012 of the user's friends. Thegame history information 1012 can provide information about a givenfriend's gameplay history, such as the most recent games played, theduration of gameplay sessions, statistics relating to the gameplay, etc.

It will be appreciated that many methods and configurations forpresenting a cloud gaming interface are possible in accordance withvarious embodiments of the invention. In one such embodiment, a methodfor displaying a current gaming status of users of a cloud gaming systemis provided, including the following method operations: presenting acloud gaming interface of a primary user; determining one or moresecondary users that are friends of the primary user; determining acurrent status of each of the secondary users, the current status beingone of online or offline; for at least one online secondary user,presenting a live feed of a current gaming session of the onlinesecondary user in the cloud gaming interface of the primary user, thelive feed includes providing an option for the primary user to join thecurrent gaming session of the online secondary user; in response toreceiving a request to activate the option for the primary user to jointhe current gaming session of the online secondary user, initiating amultiplayer mode of the current gaming session of the online secondaryuser, the multiplayer mode providing for gameplay of the primary user inthe current gaming session of the online secondary user; whereininitiating the multiplayer mode includes determining an ownership statusof the primary user with respect to a video game defining the currentgaming session of the online secondary user; wherein when the primaryuser is determined to own the video game, then the multiplayer modeprovides for gameplay of a full version of the video game; wherein whenthe primary user is determined to not own the video game, then themultiplayer mode provides for gameplay of a limited version of the videogame.

In one embodiment, the limited version of the video game defines areduction, as compared to the full version of the video game, in one ormore of available levels, available scenes, available features, a timelimit, a virtual space, a campaign length, a number of lives, or anumber of replays.

In one embodiment, the method further includes a method operation ofpresenting, when the video game is not owned by the primary user, anoption for the primary user to purchase at least a portion of the videogame.

In one embodiment, the live feed of the online secondary user ispresented at a first resolution; and selection of the live feed triggerspresentation of the live feed of the online secondary user at a secondresolution higher than the first resolution.

In one embodiment, the live feed of the online secondary user ispresented in a desaturated color mode; and selection of the live feedtriggers presentation of the live feed of the online secondary user in asaturated color mode.

In one embodiment, presenting the cloud gaming interface includespresenting a library of game titles associated with each of thesecondary users.

In one embodiment, determining the one or more secondary users includesaccessing a social graph associated with the primary user. In oneembodiment, accessing the social graph includes accessing an API of asocial network.

In one embodiment, presenting the cloud gaming interface of the primaryuser includes presenting a listing of each of the secondary users in apriority order, the priority order based on one or more of currentstatus, recency of login, or common ownership of games with the primaryuser.

FIG. 11 illustrates a method for presenting live gameplay feeds offriends of the current user, in accordance with an embodiment of theinvention. At method operation 1100, a current user logs on to a cloudgaming system. At method operation 1102, the current user's friends areidentified from a social graph of the current user. As has been noted,the social graph of the current user can be from a social network thatis specific to the cloud gaming system or maybe from a social networkthat exists apart from the cloud gaming system. At method operation1104, the library information of the user's friends is retrieved. Thelibrary information of the user's friends can identify game titles inthe user's friends libraries. At method operation 1106, the currentuser's friends' current statuses are identified. If the current statusof a given friend is online then at method operation 1108 it isdetermined whether the given friend is currently engaged in gameplay ofa videogame on the cloud-based system. If so then at method operation1112, a live gameplay feed for that user is obtained. At methodoperation 1110, the friends of the current user are prioritized fordisplay based on various factors or preferences. At method operation1114, the current user's friends and their status information and lifegameplay feeds are presented in the priority order. In one embodiment,friends of the current user who are online may be prioritized overfriends that are currently off-line. In one embodiment, friends ofcurrent user who are currently engaged active gameplay may beprioritized over friends that are not currently engaged in activegameplay. In one embodiment, friends having available live gameplayfeeds may be prioritized over other friends. In one embodiment, friendsmay be prioritized based on the recency with which they have logged intothe cloud gaming system. In another embodiment, friends may beprioritized based on common ownership of videogames. The foregoingexamples of prioritization of friends are provided merely by way ofexample and not by way of limitation. It will be appreciated by thoseskilled in the art that in other embodiments, the current user's friendscan be prioritized and presented according to the priority orderingbased on any other relevant factor.

FIG. 12 illustrates a system including a cloud gaming system and asocial network, in accordance with an embodiment of the invention. Acloud gaming system 1200 provides access to cloud-based your games. Thecloud gaming system includes a game library 1202 which contains variousgame titles that may be played by users. User data 1204 contains variouskinds of data which are associated with users accounts, such as the gametitles which are owned by a user, and any saved gameplay of the user. Inthe illustrated embodiment, various gameplay sessions are conceptuallyshown, including a session A, a session B, and a session C. The sessionA defines gameplay of a user A, who views the gameplay of the session Aon a display 1208. The gameplay of the session A is rendered as view1210 on user A's display 1208. Likewise, the session B defines gameplayof a user B, which is rendered on user B's device 1212 as a view 1214.In the illustrated embodiment, the view 1214 of user B's session showsan interface including live views from other users, including a liveview of the session A and a live view of the session C. As gameplay fromthe sessions A and C proceeds, gameplay video is output from sessions Aand C and can be streamed via user B's session, so as to be displayed inuser B's view 1214. The gameplay video may be processed for streamingvia user B's session, e.g. lowering resolution, size, framerate, colorsaturation, etc. to conserve bandwidth.

With continued reference to FIG. 12, a social network 1216 is alsoshown. The social network 1216 includes user data 1218, which includesdata such as user's social graphs, posts, pictures, videos, biographicalinformation, etc. Apps 1220 can be run on the social network platform. Agraphical user interface (GUI) 1222 defines an interface for interactingwith the social network. An API 1224 facilitates access to the socialnetwork. A notification module 1226 handles notification of socialnetwork users according to their preferences. As has been noted, userB's view 1214 includes live feeds from the sessions of other users. Inone embodiment, user B's friends were determined based on accessing theAPI 1224 of the social network 1216 to determine members of user B'ssocial graph. These members were cross-referenced against the users ofthe cloud gaming system to provide live gameplay feeds from friends ofthe user B, including feeds from the sessions A and C.

In one embodiment, the user A opts to share from his gameplay session Ato his social graph. User A's session A communicates via the API 1224 toactivate the notification module 1226 of the social network 1216 to sendan appropriate notification to friends in the social graph of the userA. When a social network user 1230 who is in the social graph of theuser A accesses the social network via a device 1228, they may see amessage or posting from user A about user A's session. If set up, a usermight receive notifications such as an e-mail indicating that user A hasshared something on the social network. It should be appreciated thatuser A may share about various video game related activity, such asachievements in a video game, invitations to play a video game, commentsabout a video game, an invitation to view or play a game slice the userA has created, a video clip of user A's gameplay, etc.

FIG. 13 is a graph illustrating various game state variables over time,in accordance with embodiments of the invention. It should beappreciated that in various embodiments, there can be many differentkinds of game state variables that will be particular to specific videogames. Those shown and described with reference to the illustratedembodiment are provided merely by way of example and not by way oflimitation. The game state variables can include values which aredefined by the executing video game as well as values which are definedby a user input. In the illustrated embodiment, there are positionvariables shown indicating the X, Y, and Z positions of an object in avirtual space of a videogame such as a character or a vehicle. Cameraangle variables indicate the direction of a virtual camera or virtualview in the videogame. In one embodiment, the camera angle is defined byand azimuth component measured (e.g. along a horizontal plane) relativeto and azimuth reference and an inclination component measured relativeto an inclination reference (e.g. relative to vertical). Actionvariables such as the illustrated action A and B variables indicate theinitiation and sustain of various actions within the videogame. Itshould be appreciated that actions for a given videogame will bespecific to the context of the videogame. By way of example, actionscould include the initiation of specific maneuvers, the application ofskills, the triggering of modification mechanisms that modify anexisting action such as increasing its level of intensity or frequency,etc., or any other type of action or activity that can be triggered byuser input during the course of the videogame. With continued referenceto FIG. 13, a weapon variable indicates the triggering of a weapon thevideogame. A health variable indicates a level of health of, forexample, a user's character in the videogame. Button variables indicatethe state of buttons on a controller device, e.g. whether the button isin a depressed state or in a released statement. Joystick statevariables in the illustrated embodiment indicate a magnitude of movementof a joystick relative to a neutral position. The foregoing game statevariables which have been described with reference to the illustratedembodiment are merely exemplary, and it will be recognized by thoseskilled in the art that many other types of game state variables can betracked over time.

With reference again to the embodiment of FIG. 6, in one embodiment, thegame state analyzer 614 can be configured to analyze the game statevariables of a user's recorded gameplay. Based on the analysis of theuser's recorded gameplay, various regions of interest of the user'srecorded gameplay can be defined and presented to the user as possibleselections from which to generate a game slice. For example, a region ofgameplay characterized by high levels of activity for certain game statevariables might define a selection of the user's recorded gameplay. Itshould be appreciated that the level of activity for a given game statevariable can be based on various factors such as a level of intensity, afrequency of activation, a duration of sustain, etc. In someembodiments, the analysis of the game state variables can entailsearching for regions of gameplay wherein the levels of activity of twoor more different game state variables are correlated in a predefinedmanner, e.g. the two or more variables have high levels of activitysimultaneously. A high level of activity can be determined based on apredefined threshold.

In various embodiments, a region of interest of the user's recordedgameplay may be automatically determined based on threshold detection ofany one or more of the following: one or more user inputs, rate of userinput, frequency of input, repeats of types of inputs, occurrences ofinput patterns, combination inputs (e.g. combo keys), motion vectors,pressure exerted on a controller, excitation of a user (e.g. detectedbased on captured image or audio data of the user).

FIG. 14A illustrates a method for generating a game slice for a lineartype videogame, in accordance with an embodiment of the invention.Broadly speaking, a linear videogame is one for which the progression ofthe player through the videogame follows a linear course, wherein inorder to progress through the videogame the player must complete anearlier objective before progressing to a later objective. Thus, allplayers must complete the same objectives in the same order in order toprogress through the videogame. Objectives in a linear videogame may betied to both geographic as well as temporal locations within the contextof a spatiotemporal storyline of the videogame. At method operation1400, a scene of a videogame is identified. The scene can be bothspatial and temporal in nature, and have various objectives definedwithin therein. At method operation 1402, a spatial or temporal lengthof the scene is defined. The length of the scene can be definedaccording to user input, and may also be defined based on objectiveswhich are tied to the scene. At method operation 1404, the initialproperties of items, characters, or any other objects within the scenefor which properties can be assigned, is defined. At method operation1406, a game slice is generated for the identified length of the scenehaving the initial properties as previously defined.

FIG. 14B illustrates a method of generating a game slice for an openworld type videogame, in accordance with an embodiment of the invention.An open world videogame can be characterized as one wherein the user isat liberty to pursue any number of objectives in an order of their ownchoosing. Open world type video games typically also allow the user tonavigate one or more virtual spaces at will. In order to progress todifferent levels of the videogame or complete videogame, completion of acertain set of objectives may be required, however users may be free tocomplete these objectives in different orderings. At method operation1410, a location within a virtual world of the videogame is identified.At method operation 1412, a limited portion of the virtual world isdefined. The limited portion of the virtual world can be defined basedon user input defining a selection of recorded gameplay as has beendescribed herein. For example, a user's gameplay in an open worldvideogame may range over a great variety of locations during the courseof gameplay. However for purposes of generating a game slice, the usermay select a portion of gameplay occurring within a limited geographicregion of the virtual world of the videogame. This limited geographicregion can be determined based on analysis of the user selected portionof their recorded gameplay, e.g. tracking a location of a usercontrolled character within the virtual world and defining boundarieswhich include all locations in which the character was found to exist.At method operation 1414, the initial properties of various objects,characters, items, vehicles, or any other objects found within thelimited geographic region previously determined from the user's recordedgameplay selection, is defined. At method operation 1416, the game sliceis generated based on the limited geographic region of the open worldand the previously defined properties.

FIG. 14C illustrates a method for generating a game slice for a sportsvideogame, in accordance with an embodiment of the invention. The gameslice can be generated based on a user defined selection of the usersrecorded gameplay. At method operation 1420, a setting is identifiedbased on the selection of the user's recorded gameplay. By way ofexample, the setting can define a location of a sporting event, such asa court, stadium, track, or any other place setting in which a sportingevent of the videogame may occur. At method operation 1422, a timeperiod is defined based on the selection of the user's recordedgameplay. The time period defines a temporal portion for which the gameslice will be generated, and can be defined based on the user'sselection of recorded gameplay. The time period of the sports video gamemay determine certain aspects of the video game slice, such as theinclusion of special rules or activities which occur at certain timeperiods during a sport. At method operation 1424, the players of thegame slice are determined based on the players included in the user'srecorded gameplay selection. Players can include one or more characterswhich have been defined by the user, as well as artificial intelligence(AI) characters, which were controlled by AI character control logic ofthe executing video game at the time of gameplay. As has been describedelsewhere herein, the actions of AI characters might be approximated insome instances. Whereas in some embodiments, the AI character controllogic is defined for the game slice with the parameters as they weredefined in the user's recorded gameplay selection. At method operation1426, scene attributes for the location setting of the sports video gameslice are defined. For example, these may include attributes such asweather, track or court conditions, and other attributes of the sportssetting. At method operation 1428, the game slice for the video game isgenerated based on the aforementioned parameters.

FIG. 15 conceptually illustrates the formation of a multi-game slicegame, in accordance with an embodiment of the invention. A videogame canbe organized into various levels or stages. In the illustratedembodiment, a user's gameplay from various levels of a videogame areshown. Specifically, a gameplay timeline 1500 represents the user'sgameplay from a first level of the videogame, whereas a gameplaytimeline 1502 and a gameplay timeline 1506 represent the user's gameplayfrom second and third levels, respectively, of the videogame. Inaccordance with an embodiment of the invention, a user can concatenatemultiple games slices from the videogame to form a larger multi-gameslice minigame. In the illustrated embodiment, a selection 1502 from theuser's gameplay timeline 1500 is utilized to define a first game slice1514. A selection 1504 from the user's gameplay timeline 15 of two isutilized to define a second game slice 1818. And a selection 1508 fromthe user's gameplay timeline 1506 is utilized to define a third teamslice 1522. The first, second, and third games slices are arranged in asequential order to define the minigame 1510. In so doing, the minigame1510 includes games slices from each of the first, second, and thirdlevels of the videogame. In this manner, a user who plays the minigame1510 is able to experience limited portions of multiple levels of thevideogame by playing through the minigame 1510. This can be useful inproviding a more compelling preview or demo of a video game thanconventional game demos wherein a user can only play one portion fromone level or stage of the video game. The experience is analogous tothat of a movie preview, which typically provides clips from differentportions of the same movie, and not just a single clip. According toembodiments of the invention, users can enjoy multi-portion game demoswhich provide a better sense of the scope of the full videogame, andwhich can feature gameplay in a continuous manner from one portion tothe next.

In one embodiment, a user can insert additional material, such as a userdefined video, message, images, or any other type of information, beforeor following a game slice. In the illustrated embodiment, anintroduction 1512 is provided for introducing a player to the minigame1510 and perhaps also introducing the player to the first game slice1514. Additionally, a message 1516 is inserted in between the first gameslice 1514 and the second game slice 1518, while another message 1520 isinserted in between the second game slice 1518 and the third game slice1522. In one embodiment, the inserted material can include recordedgameplay video of the original user's gameplay from which the game slicewas generated. If the recorded gameplay is shown before playing the gameslice, the player initiating the game slice can better understand thegame slice and its objectives before beginning gameplay, whereas isshown after gameplay of the game slice, the player can understand howtheir gameplay of the game slice compares to that of the original user.

FIG. 16 conceptually illustrates the generation of a multi-game sliceminigame, in accordance with an embodiment of the invention. In theillustrated embodiment, a user's recorded gameplay timeline 1600 for agame A is shown, along with the user's recorded gameplay timeline 1604for a game B, and the user's recorded gameplay timeline 1608 for a gameC. In one embodiment, the user is able to generate a multi-game sliceminigame based on game slices from different video games. In theillustrated embodiment, a selection 1602 of the user's recorded gameplay1600 is utilized to define a game slice 1616, whereas a selection 1606from the user's recorded gameplay 1604 is utilized to define a gameslice 1620, and a selection 1610 from the users recorded gameplay 1608is utilized to define a game slice 1624. The game slices 1616, 1620, and1624 are sequentially arranged to define the minigame 1612. Optionally,additional material can be inserted before or following a game slice. Inthe illustrated embodiment, an introduction 1614 is inserted before thegame slice 1616, whereas an interlude 1618 is defined between the gameslice 1616 and the game slice 1620, and another interlude 1622 isdefined between the game slice 1620 and the game slice 1624.

In the illustrated embodiment, it will be appreciated that the gameslices are taken from different video games. This allows the user greatflexibility to mix together game slices from across different gametitles, genres, and even console platform generations. Merely by way ofexample, a user might create a minigame having game slices from each ofseveral game titles in a singular video game series. In this manner, aplayer of the minigame is able to experience and appreciate theevolution of the video game series in a continuous gameplay experience.

Embodiments of the invention have generally been described withreference to cloud-based gaming systems. However, it should beappreciated by those skilled in the art that similar concepts andprinciples as have been described herein can be applied to traditionalconsole-based videogame systems, possibly in conjunction withcloud-based gaming systems. For example, a user can play a console-basedvideogame and have the user's gameplay input data and game stayedmetadata recorded during gameplay. Based on the user's gameplay inputdata and game state metadata, the actual gameplay output of thevideogame can be regenerated at a later time. Therefore, the recordedinput data and game state metadata can be utilized in conjunction withthe videogame code to provide an interface for selection of a portion ofthe user's gameplay from which to generate a minigame, as has beendescribed. The minigame code can be generated at the console anduploaded to a cloud system and made available for download by otherusers. In another embodiment, the minigame code is generated by thecloud system after receiving the selected portion of the users gameplayinput data and game state metadata. The cloud system processes theselected portion of the users gameplay input data and game statemetadata to generate the minigame code based on videogame code stored inthe cloud system. Once generated, the minigame can be made available forcloud-based gaming wherein execution of the minigame occurs in thecloud-based system, but can also be made available for download totraditional console-based systems for execution on the console tofacilitate console-based gameplay of the minigame. In this manner,minigame's can be created and played by both users of console-basedvideo gaming systems and users of cloud-based video gaming systems.

Embodiments of the invention have generally been described withreference to minigames or playable user-defined portions of video games.However, it will be appreciated by those skilled in the art that many ofthe principles elucidated herein also readily apply to the generationand sharing of recorded gameplay, including sharing recorded gameplayvideo, screenshots, and live streaming of active gameplay. In someembodiments, providing access to a minigame (e.g. in response toreceiving a notification) can include a presentation of recorded videoof the gameplay of the original user which formed the basis for theminigame. In still other embodiments, methods, systems, and interfacesare contemplated for facilitating sharing of a user's gameplay to theuser's social graph.

In one embodiment, a method for storing gameplay is contemplated.Gameplay can be executed by the operating system of a game console inresponse to a user request, which can come in the form of a standardfile operation with respect to a set of data associated with the desiredgameplay. The request can be transmitted from an application associatedwith a game. The gameplay can comprise, for example, video content,audio content and/or static visual content, including wallpapers,themes, code “add-on” content, or any other type of content associatedwith a game. It is contemplated that such content can be user- ordeveloper-generated, free or paid, full or trial, and/or for sale or forrent.

A portion of the gameplay can be buffered, i.e., stored temporarily. Forexample, the previous 15 seconds, the previously completed level, forthe previous action within the gameplay can be stored temporarily, asdescribed further herein. The term “portion” used herein can correspondto any part of the gameplay that is divisible into any related orarbitrary groups of single or multiple bits or bytes of data. Forexample, “portions” of gameplay may correspond to levels, chapters,scenes, acts, characters, backgrounds, textures, courses, actions,songs, themes, durations, sizes, files, parts thereof, and combinationsthereof. Further, portions of gameplay can comprise screenshots orprescribed durations of video capture.

In one embodiment, portions of the gameplay can be stored locally on thegame console in either temporary or permanent storage. Alternatively oradditionally, portions of the gameplay can be transmitted over a networkstored remotely. For example, portions of the gameplay can betransmitted over a wireless or wired network to another computingdevice, to another game console, or to a remote server. Such remoteservers may include social media servers.

Optionally, portions of the gameplay not retrieved from the buffer orportions of the gameplay outside a particular gaming interval (e.g., aparticular duration, level, chapter, course, etc.) can be removed fromthe buffer. This removal process can be completed using standard fileoperations on the operating system.

The portions of the gameplay can be displayed on any of a number ofdisplay devices having access to the stored gameplay. For example, thestored gameplay can be displayed on a television set connected to thegame console from which the gameplay was captured. In another examplethe stored gameplay can be displayed on a computer to which the storedgameplay was transmitted. The stored gameplay can be displayed alone orin conjunction with other information, such as on a social mediawebsite.

In one embodiment, portions of the gameplay are displayed by anothergame console associated with the user other than the user that bufferedor captured the gameplay. According to this embodiment, the portions ofthe gameplay may show a ball being thrown from a first user to a seconduser, from the point of view of the first user. The portions of gameplaycan then be transmitted to the game console of the second user. Thus,the second user can then view the gameplay from the point of view of thefirst user. The second user can also have portions of gameplay storedshowing the ball being thrown by the first user and caught a seconduser, from the point of view of the second user. In this embodiment thesecond user can review the gameplay from both point of view the firstuser and the point of view of the second user. Still further, theportions of the gameplay stored by the second user can be transmitted tothe game console of the first user, so that the first user may reviewthe gameplay from two points of view. This embodiment can apply to anynumber of users having any number of points of view, so the gameplay canbe reviewed from any number of different perspectives.

With respect to storage, transmission and/or display of the portions ofthe gameplay as described herein, it is contemplated that portions ofthe gameplay can be stored, transmitted and displayed as image or videodata. In another embodiment, however, portions of the gameplay can bestored and transmitted as telemetry or metadata representative of theimage or video data, and can be re-created as images or video by a gameconsole or other device prior to display.

In some embodiments, the portion of the gameplay has a predeterminedrelationship with the executed gameplay. For example, the portion of thegameplay can correspond to a certain amount of gameplay prior to thecurrently executing gameplay, such as the previous 10 seconds ofgameplay. In another embodiment, a first portion of the gameplay has apredetermined relationship with a second portion of the gameplay. Forexample, the first portion of the gameplay can correspond to a certainamount of gameplay prior to receipt of a request to capture a secondportion of gameplay, such as the 10 seconds of gameplay prior toselection of a capture button. In each of these embodiments, the amountof gameplay buffered prior to the current gameplay or the requestedgameplay can be configured and adjusted by the user according to his orher particular preferences.

In other embodiments, the buffer is “smart” or “elastic,” such that itcaptures gameplay according to variables without regard to time. In onesuch embodiment, the first portion of the gameplay has a predeterminedrelationship with an event related to the gameplay. For example thefirst portion of the gameplay may be buffered to include a statisticalanomaly, such as a high score being reached, the gathering of a largenumber of points in a short amount of time, the multiple selections ofbuttons on a controller, and other rare events. Such statisticalanomalies can be determined by comparing gameplay metrics to averagemetrics for a particular game or scene or for all games generally. Suchaverage metrics can be stored locally or remotely for comparison. Forexample, the game console can track global high scores for a particulargame, and buffer gameplay in which a user approaches and surpasses thathigh score. In another example, a remote server can track global highscores for a particular game, and can communicate that information tothe game console, which buffers gameplay in which the user approachesand surpasses that high score.

In another example, the portion of the gameplay can be buffered toinclude an achievement, such as a trophy being attained or otherlandmark being reached. Such trophies or landmarks memorialized any goalor gaming achievement, such as a certain number of points beingattained, a certain level being reached, and the like. For example,gameplay can be buffered to include the awarding of a trophy forreaching level 10, for reaching 100,000 points, etc.

Similarly, progress toward reaching an event, in addition to the actualattainment of the trophy or statistical anomaly, can be buffered to beincluded in the portion of the gameplay. For example, a screenshot canbe taken at each of levels one through 10, creating a photo album tomemorialize the receipt of a trophy for reaching level 10. Anotherexample, a video can be taken of the user winning a race for the firstthrough fifth times, where a trophy is awarded for five wins.

Thus, according to embodiments of the invention, at least a portion ofexecuted gameplay can always be kept in a running buffer. In otherwords, when a request to share a portion of the gameplay is received, aportion of the prior gameplay can already be captured to includeprevious footage. For example, if a request to share gameplay isreceived after a user crosses the finish line in a racing game, thebuffered gameplay can include footage of the user crossing the finishline. In other words, a user will be able to capture moments occurringbefore a request is made to share gameplay.

FIG. 17 illustrates an interface for sharing gameplay, in accordancewith an embodiment of the invention. The interface 1700 as shownincludes various selectable icons to facilitate sharing to friends of auser, e.g. members of a social graph of the user. In one embodiment, theinterface 1700 can be accessed from a dedicated button on a controllerdevice. When the button is pressed during gameplay, the interface 1700can be presented to enable the user to share their gameplay.

The icon 1702 can be selected to initiate uploading of a screenshot fromthe user's gameplay. In one embodiment, the region 1704 of the icon 1702is populated with a representative screenshot from the user's recentgameplay, thereby providing a small-scale preview of the screenshot thatmay be shared. In one embodiment, selection of the icon 1702 may provideaccess to an additional screenshot selection interface which allows theuser to select a particular screenshot from the user's recorded gameplayfor sharing to the user's social graph. This may take the form of anavigable gameplay video timeline, which can be traversed or navigatedto identify a particular time point within the gameplay and itscorresponding screenshot.

The icon 1706 can be selected to initiate uploading of a video of theuser's gameplay. The region 1708 of the icon 1706 can be configured todisplay a representative video clip from the user's recent gameplay,e.g. the last 5 seconds of the user's gameplay, a recent achievement,etc., thereby displaying a small-scale preview of a video clip from theuser's gameplay which can be shared with others.

The icon 1710 can be selected to initiate live video streaming of theuser's active gameplay. In one embodiment, selection of the icon 1710will trigger resumption of the user's gameplay while initiating livevideo streaming of the user's gameplay. In another embodiment, selectionof the icon 1710 provides access to an interface to determine settingsfor the streaming video broadcast, such as who to share the streamingvideo with, whether to include a video stream from a local image capturedevice intended to show the user himself/herself during the gameplay,whether to enable comments, etc.

It will be appreciated that the user may share gameplay (e.g. a selectedscreenshot, video, or live gameplay stream) to one or more specificallyselected friends, to their entire social graph, or to any user of thesocial network. The social network can be a gaming social networkassociated with the platform on which the video game is run, or athird-party social network that exists separate from the video game orits platform. The social network can be accessed through an API definedto allow interfacing with the social network. Users to whom gameplay hasbeen shared may receive a notification informing them of the sharedgameplay. Such a notification may take the form of a posting to a socialnews feed, a private message through the social network, an in-gamenotification, an e-mail, a chat notification, etc. Sharing gameplay tothe social network may entail making the gameplay available to otherother subsets of users of the social network who may or may not be partof the sharing user's social graph. For example, for a given video game,gameplay may be shared or made available to any user of the socialnetwork who also owns the video game and therefore is granted access toshared gameplay of the video game. Such shared gameplay may be accessedthrough online forums, chat rooms, or other online channels that areavailable only to players of the video game. In one embodiment, a videogame may have a dedicated page or site on the social network. Sharedgameplay can be made available to users accessing the page or site ofthe video game game. Of course, it will be appreciated that from theperspective of the sharing user, options can be provided to allow theuser to specify and tailor who and what forum to which their gameplaywill be shared.

FIG. 18 illustrates an interface 1800 for selecting a portion ofrecorded gameplay video for sharing, in accordance with an embodiment ofthe invention. The interface 1800 includes a preview region 1802, whichloops a preview of a currently selected portion of video from the user'sgameplay. Screenshots 1804, 1806, 1808, 1810, and 1812 are positionedadjacent to each other in chronological order to define a timeline ofscreenshots indicating the contents of the gameplay video. The variousscreenshots, 1804, 1806, 1808, 1810, and 1812 can be image framesextracted at regular intervals from the gameplay video. The screenshottimeline can be scrolled to the right or left to show additional framespreceeding or proceeding those currently displayed. Markers 1814 and1816 indicate the start and end points for a currently selected videoclip (or segment or portion). The currently selected video clip can berepeatedly played back in the preview region 1802, as has been noted.

In one embodiment, buttons 1818 and 1820 can be selected to reduce orincrease, respectively, the duration of the selected video portion. Apreview option 1822 can be selected to trigger playback of a fullscreenpreview of the currently selected video clip. A trimming option 1824 canbe selected to access additional video trimming features.

FIG. 19 illustrates an interface 1900 for viewing a live video stream ofa user's gameplay, in accordance with an embodiment of the invention. Atreference 1902, the name and/or alias of the user that is streamingtheir gameplay is shown. At reference 1904, the number of users who arecurrently viewing the live video stream is shown. The live video streamof the user's gameplay is displayed in the video display region 1906.Additionally, a live user video 1908 can be included, showing live videoof the actual user whose gameplay is being live streamed. A commandoption 1910 can be selected to allow the viewing user to issue commandsaffecting the video game, or even take over control of the streaminguser's gameplay. It will be appreciated that the issuance of in-gamecommands or remotely controlling the user's gameplay may requirepermission, either predefined or requested at the time of gameplay, fromthe user playing the game to allow the viewing user to perform suchactions.

An option 1912 allows the viewing user to join the gameplay of thestreaming user. And an option 1914 enables the viewing user to purchasethe in-progress video game.

Furthermore, the interface can include a comments section 1916 whichdisplays comments from users viewing the live video stream, indicatingthe time of each comment. A comment input field 1918 is provided for theviewing user to enter text for a comment to be posted. And the sendbutton 1920 is pressed to upload the comment for viewing by the livestreaming user and others viewing the live video stream.

Though embodiments of the invention have been described with referenceto accessing various interfaces for sharing from a dedicated buttonpress, it will be appreciated that in other embodiments, some or all ofthese interfaces may not be required to facilitate sharing of gameplayto a user social graph. For example, in one embodiment, a controllerbutton can be configured to capture a screenshot of the users gameplaywhen pressed. The captured screenshot can then be automatically uploadedand shared to the user social graph.

In another embodiment, pressing a specific button on the controllerinitiatiates recording of gameplay video. When the specific button ispressed a second time, recording of the gameplay video is stopped, andthe video clip can be uploaded and shared to the user social graph. Inone embodiment, the uploading and sharing of the video clip to the usersocial graph may take place automatically following termination of thevideo recording operation. However, in another embodiment, when thespecific button is pressed a second time to stop recording, an interfaceis presented to allow the user to customize various options such astrimming the video, selecting a representative screenshot for the video,determine specific users with whom to share the video with, add acaption or title, etc. After customization by the user, the video can beshared with others or otherwise made available for viewing.

In one embodiment, a specific button on the controller can be configuredto share a predefined duration of gameplay video on a social network.For example, a user might specify that when the button is pressed, theprevious 10 seconds of gameplay video will be shared to the user socialgraph. In another embodiment, it may be specified that when the buttonis pressed, the next 10 seconds of gameplay video will be recorded andshared to the social graph. It should be appreciated that options fortrimming the video and performing other types of customization may beapplied to the recorded gameplay video. Furthermore, recorded gameplayvideo of a predefined duration following the button trigger can becombined with previously buffered gameplay video as has been described.

In yet another embodiment, a specific button on the controller devicecan be configured to initiate live video streaming of the users activegameplay. A live video streaming can be predefined to be made availableonly to members of the user social graph, or to other smaller or largergroups of users, such as a specific subset of the user social graph, allusers who own or otherwise have access to the same video game, any userof the gaming platform, etc.

FIG. 20 illustrates hardware and user interfaces that may be used toprovide interactivity with a video game, in accordance with oneembodiment of the present invention. FIG. 20 schematically illustratesthe overall system architecture of the Sony® Playstation 3®entertainment device, a console that may be compatible for interfacing acontrol device with a computer program executing at a base computingdevice in accordance with embodiments of the present invention. A systemunit 2000 is provided, with various peripheral devices connectable tothe system unit 2000. The system unit 2000 comprises: a Cell processor2028; a Rambus® dynamic random access memory (XDRAM) unit 2026; aReality Synthesizer graphics unit 2030 with a dedicated video randomaccess memory (VRAM) unit 2032; and an I/O bridge 2034. The system unit2000 also comprises a Blu Ray® Disk BD-ROM® optical disk reader 2040 forreading from a disk 2040 a and a removable slot-in hard disk drive (HDD)2036, accessible through the I/O bridge 2034. Optionally the system unit2000 also comprises a memory card reader 2038 for reading compact flashmemory cards, Memory Stick® memory cards and the like, which issimilarly accessible through the I/O bridge 2034.

The I/O bridge 2034 also connects to six Universal Serial Bus (USB) 2.0ports 2024; a gigabit Ethernet port 2022; an IEEE 802.11b/g wirelessnetwork (Wi-Fi) port 2020; and a Bluetooth® wireless link port 2018capable of supporting up to seven Bluetooth connections.

In operation, the I/O bridge 2034 handles all wireless, USB and Ethernetdata, including data from one or more game controllers 2002-2003. Forexample when a user is playing a game, the I/O bridge 2034 receives datafrom the game controller 2002-2003 via a Bluetooth link and directs itto the Cell processor 2028, which updates the current state of the gameaccordingly.

The wireless, USB and Ethernet ports also provide connectivity for otherperipheral devices in addition to game controllers 2002-2003, such as: aremote control 2004; a keyboard 2006; a mouse 2008; a portableentertainment device 2010 such as a Sony Playstation Portable®entertainment device; a video camera such as an EyeToy® video camera2012; a microphone headset 2014; and a microphone 2015. Such peripheraldevices may therefore in principle be connected to the system unit 2000wirelessly; for example the portable entertainment device 2010 maycommunicate via a Wi-Fi ad-hoc connection, whilst the microphone headset2014 may communicate via a Bluetooth link.

The provision of these interfaces means that the Playstation 3 device isalso potentially compatible with other peripheral devices such asdigital video recorders (DVRs), set-top boxes, digital cameras, portablemedia players, Voice over IP telephones, mobile telephones, printers andscanners.

In addition, a legacy memory card reader 2016 may be connected to thesystem unit via a USB port 2024, enabling the reading of memory cards2048 of the kind used by the Playstation® or Playstation 2® devices.

The game controllers 2002-2003 are operable to communicate wirelesslywith the system unit 2000 via the Bluetooth link, or to be connected toa USB port, thereby also providing power by which to charge the batteryof the game controllers 2002-2003. Game controllers 2002-2003 can alsoinclude memory, a processor, a memory card reader, permanent memory suchas flash memory, light emitters such as an illuminated sphericalsection, LEDs, or infrared lights, microphone and speaker for ultrasoundcommunications, an acoustic chamber, a digital camera, an internalclock, a recognizable shape such as the spherical section facing thegame console, and wireless communications using protocols such asBluetooth®, WiFi™, etc.

Game controller 2002 is a controller designed to be used with two hands,and game controller 2003 is a single-hand controller with an attachment.In addition to one or more analog joysticks and conventional controlbuttons, the game controller is susceptible to three-dimensionallocation determination. Consequently gestures and movements by the userof the game controller may be translated as inputs to a game in additionto or instead of conventional button or joystick commands. Optionally,other wirelessly enabled peripheral devices such as the Playstation™Portable device may be used as a controller. In the case of thePlaystation™ Portable device, additional game or control information(for example, control instructions or number of lives) may be providedon the screen of the device. Other alternative or supplementary controldevices may also be used, such as a dance mat (not shown), a light gun(not shown), a steering wheel and pedals (not shown) or bespokecontrollers, such as a single or several large buttons for arapid-response quiz game (also not shown).

The remote control 2004 is also operable to communicate wirelessly withthe system unit 2000 via a Bluetooth link. The remote control 704comprises controls suitable for the operation of the Blu Ray™ DiskBD-ROM reader 2040 and for the navigation of disk content.

The Blu Ray™ Disk BD-ROM reader 2040 is operable to read CD-ROMscompatible with the Playstation and PlayStation 2 devices, in additionto conventional pre-recorded and recordable CDs, and so-called SuperAudio CDs. The reader 2040 is also operable to read DVD-ROMs compatiblewith the Playstation 2 and PlayStation 3 devices, in addition toconventional pre-recorded and recordable DVDs. The reader 2040 isfurther operable to read BD-ROMs compatible with the Playstation 3device, as well as conventional pre-recorded and recordable Blu-RayDisks.

The system unit 2000 is operable to supply audio and video, eithergenerated or decoded by the Playstation 3 device via the RealitySynthesizer graphics unit 2030, through audio and video connectors to adisplay and sound output device 2042 such as a monitor or television sethaving a display 2044 and one or more loudspeakers 2046. The audioconnectors 2050 may include conventional analogue and digital outputswhilst the video connectors 2052 may variously include component video,S-video, composite video and one or more High Definition MultimediaInterface (HDMI) outputs. Consequently, video output may be in formatssuch as PAL or NTSC, or in 720p, 1080i or 1080p high definition.

Audio processing (generation, decoding and so on) is performed by theCell processor 2028. The Playstation 3 device's operating systemsupports Dolby® 5.1 surround sound, Dolby® Theatre Surround (DTS), andthe decoding of 7.1 surround sound from Blu-Ray® disks.

In the present embodiment, the video camera 2012 comprises a singlecharge coupled device (CCD), an LED indicator, and hardware-basedreal-time data compression and encoding apparatus so that compressedvideo data may be transmitted in an appropriate format such as anintra-image based MPEG (motion picture expert group) standard fordecoding by the system unit 2000. The camera LED indicator is arrangedto illuminate in response to appropriate control data from the systemunit 2000, for example to signify adverse lighting conditions.Embodiments of the video camera 2012 may variously connect to the systemunit 700 via a USB, Bluetooth or Wi-Fi communication port. Embodimentsof the video camera may include one or more associated microphones andalso be capable of transmitting audio data. In embodiments of the videocamera, the CCD may have a resolution suitable for high-definition videocapture. In use, images captured by the video camera may for example beincorporated within a game or interpreted as game control inputs. Inanother embodiment the camera is an infrared camera suitable fordetecting infrared light.

In general, in order for successful data communication to occur with aperipheral device such as a video camera or remote control via one ofthe communication ports of the system unit 2000, an appropriate piece ofsoftware such as a device driver should be provided. Device drivertechnology is well-known and will not be described in detail here,except to say that the skilled man will be aware that a device driver orsimilar software interface may be required in the present embodimentdescribed.

FIG. 21 illustrates additional hardware that may be used to processinstructions, in accordance with one embodiment of the presentinvention. Cell processor 2028 has an architecture comprising four basiccomponents: external input and output structures comprising a memorycontroller 2160 and a dual bus interface controller 2170A, B; a mainprocessor referred to as the Power Processing Element 2150; eightco-processors referred to as Synergistic Processing Elements (SPEs)2110A-H; and a circular data bus connecting the above componentsreferred to as the Element Interconnect Bus 2180. The total floatingpoint performance of the Cell processor is 218 GFLOPS, compared with the6.2 GFLOPs of the Playstation 2 device's Emotion Engine.

The Power Processing Element (PPE) 2150 is based upon a two-waysimultaneous multithreading Power 570 compliant PowerPC core (PPU) 855running with an internal clock of 3.2 GHz. It comprises a 512 kB level 2(L2) cache and a 32 kB level 1 (L1) cache. The PPE 2150 is capable ofeight single position operations per clock cycle, translating to 25.6GFLOPs at 3.2 GHz. The primary role of the PPE 2150 is to act as acontroller for the Synergistic Processing Elements 2110A-H, which handlemost of the computational workload. In operation the PPE 2150 maintainsa job queue, scheduling jobs for the Synergistic Processing Elements2110A-H and monitoring their progress. Consequently each SynergisticProcessing Element 2110A-H runs a kernel whose role is to fetch a job,execute it and synchronized with the PPE 2150.

Each Synergistic Processing Element (SPE) 2110A-H comprises a respectiveSynergistic Processing Unit (SPU) 2120A-H, and a respective Memory FlowController (MFC) 2140A-H comprising in turn a respective Dynamic MemoryAccess Controller (DMAC) 2142A-H, a respective Memory Management Unit(MMU) 2144A-H and a bus interface (not shown). Each SPU 2120A-H is aRISC processor clocked at 3.2 GHz and comprising 256 kB local RAM2130A-H, expandable in principle to 4 GB. Each SPE gives a theoretical25.6 GFLOPS of single precision performance. An SPU can operate on 4single precision floating point members, 4 32-bit numbers, 8 16-bitintegers, or 16 8-bit integers in a single clock cycle. In the sameclock cycle it can also perform a memory operation. The SPU 2120A-H doesnot directly access the system memory XDRAM 2026; the 64-bit addressesformed by the SPU 2120A-H are passed to the MFC 2140A-H which instructsits DMA controller 2142A-H to access memory via the Element InterconnectBus 2180 and the memory controller 2160.

The Element Interconnect Bus (EIB) 2180 is a logically circularcommunication bus internal to the Cell processor 2028 which connects theabove processor elements, namely the PPE 2150, the memory controller2160, the dual bus interface 2170A,B and the 8 SPEs 2110A-H, totaling 12participants. Participants can simultaneously read and write to the busat a rate of 8 bytes per clock cycle. As noted previously, each SPE2110A-H comprises a DMAC 2142A-H for scheduling longer read or writesequences. The EIB comprises four channels, two each in clockwise andanti-clockwise directions. Consequently for twelve participants, thelongest step-wise data-flow between any two participants is six steps inthe appropriate direction. The theoretical peak instantaneous EIBbandwidth for 12 slots is therefore 96B per clock, in the event of fullutilization through arbitration between participants. This equates to atheoretical peak bandwidth of 307.2 GB/s (gigabytes per second) at aclock rate of 3.2 GHz.

The memory controller 2160 comprises an XDRAM interface 2162, developedby Rambus Incorporated. The memory controller interfaces with the RambusXDRAM 2026 with a theoretical peak bandwidth of 25.6 GB/s.

The dual bus interface 2170A,B comprises a Rambus FlexIO® systeminterface 2172A,B. The interface is organized into 12 channels eachbeing 8 bits wide, with five paths being inbound and seven outbound.This provides a theoretical peak bandwidth of 62.4 GB/s (36.4 GB/soutbound, 26 GB/s inbound) between the Cell processor and the I/O Bridge2034 via controller 2170A and the Reality Simulator graphics unit 2130via controller 2170B.

Data sent by the Cell processor 2128 to the Reality Simulator graphicsunit 2130 will typically comprise display lists, being a sequence ofcommands to draw vertices, apply textures to polygons, specify lightingconditions, and so on.

FIG. 22 is an exemplary illustration of scene A through scene E withrespective user A through user E interacting with game clients 2202 thatare connected to server processing via the internet, in accordance withone embodiment of the present invention. A game client is a device thatallows users to connect to server applications and processing via theinternet. The game client allows users to access and playback onlineentertainment content such as but not limited to games, movies, musicand photos. Additionally, the game client can provide access to onlinecommunications applications such as VOIP, text chat protocols, andemail.

A user interacts with the game client via controller. In someembodiments the controller is a game client specific controller while inother embodiments, the controller can be a keyboard and mousecombination. In one embodiment, the game client is a standalone devicecapable of outputting audio and video signals to create a multimediaenvironment through a monitor/television and associated audio equipment.For example, the game client can be, but is not limited to a thinclient, an internal PCI-express card, an external PCI-express device, anExpressCard device, an internal, external, or wireless USB device, or aFirewire device, etc. In other embodiments, the game client isintegrated with a television or other multimedia device such as a DVR,Blu-Ray player, DVD player or multi-channel receiver.

Within scene A of FIG. 22, user A interacts with a client applicationdisplayed on a monitor 2204A using a controller 2206A paired with gameclient 2202A. Similarly, within scene B, user B interacts with anotherclient application that is displayed on monitor 2204B using a controller2206B paired with game client 2202B. Scene C illustrates a view frombehind user C as he looks at a monitor displaying a game and buddy listfrom the game client 2202C. While FIG. 22 shows a single serverprocessing module, in one embodiment, there are multiple serverprocessing modules throughout the world. Each server processing moduleincludes sub-modules for user session control, sharing/communicationlogic, user geo-location, and load balance processing service.Furthermore, a server processing module includes network processing anddistributed storage.

When a game client 2202 connects to a server processing module, usersession control may be used to authenticate the user. An authenticateduser can have associated virtualized distributed storage and virtualizednetwork processing. Examples items that can be stored as part of auser's virtualized distributed storage include purchased media such as,but not limited to games, videos and music etc. Additionally,distributed storage can be used to save game status for multiple games,customized settings for individual games, and general settings for thegame client. In one embodiment, the user geo-location module of theserver processing is used to determine the geographic location of a userand their respective game client. The user's geographic location can beused by both the sharing/communication logic and the load balanceprocessing service to optimize performance based on geographic locationand processing demands of multiple server processing modules.Virtualizing either or both network processing and network storage wouldallow processing tasks from game clients to be dynamically shifted tounderutilized server processing module(s). Thus, load balancing can beused to minimize latency associated with both recall from storage andwith data transmission between server processing modules and gameclients.

The server processing module has instances of server application A andserver application B. The server processing module is able to supportmultiple server applications as indicated by server application X₁ andserver application X₂. In one embodiment, server processing is based oncluster computing architecture that allows multiple processors within acluster to process server applications. In another embodiment, adifferent type of multi-computer processing scheme is applied to processthe server applications. This allows the server processing to be scaledin order to accommodate a larger number of game clients executingmultiple client applications and corresponding server applications.Alternatively, server processing can be scaled to accommodate increasedcomputing demands necessitated by more demanding graphics processing orgame, video compression, or application complexity. In one embodiment,the server processing module performs the majority of the processing viathe server application. This allows relatively expensive components suchas graphics processors, RAM, and general processors to be centrallylocated and reduces to the cost of the game client. Processed serverapplication data is sent back to the corresponding game client via theinternet to be displayed on a monitor.

Scene C illustrates an exemplary application that can be executed by thegame client and server processing module. For example, in one embodimentgame client 2202C allows user C to create and view a buddy list 2220that includes user A, user B, user D and user E. As shown, in scene C,user C is able to see either real time images or avatars of therespective user on monitor 2204C. Server processing executes therespective applications of game client 2202C and with the respectivegame clients 2202 of users A, user B, user D and user E. Because theserver processing is aware of the applications being executed by gameclient B, the buddy list for user A can indicate which game user B isplaying. Further still, in one embodiment, user A can view actual ingame video directly from user B. This is enabled by merely sendingprocessed server application data for user B to game client A inaddition to game client B.

In addition to being able to view video from buddies, the communicationapplication can allow real-time communications between buddies. Asapplied to the previous example, this allows user A to provideencouragement or hints while watching real-time video of user B. In oneembodiment two-way real time voice communication is established througha client/server application. In another embodiment, a client/serverapplication enables text chat. In still another embodiment, aclient/server application converts speech to text for display on abuddy's screen.

Scene D and scene E illustrate respective user D and user E interactingwith game consoles 2210D and 2210E respectively. Each game console 2210Dand 2210E are connected to the server processing module and illustrate anetwork where the server processing modules coordinates game play forboth game consoles and game clients.

FIG. 23 illustrates an embodiment of an Information Service Providerarchitecture. Information Service Providers (ISP) 2370 delivers amultitude of information services to users 2382 geographically dispersedand connected via network 2386. An ISP can deliver just one type ofservice, such as stock price updates, or a variety of services such asbroadcast media, news, sports, gaming, etc. Additionally, the servicesoffered by each ISP are dynamic, that is, services can be added or takenaway at any point in time. Thus, the ISP providing a particular type ofservice to a particular individual can change over time. For example, auser may be served by an ISP in near proximity to the user while theuser is in her home town, and the user may be served by a different ISPwhen the user travels to a different city. The home-town ISP willtransfer the required information and data to the new ISP, such that theuser information “follows” the user to the new city making the datacloser to the user and easier to access. In another embodiment, amaster-server relationship may be established between a master ISP,which manages the information for the user, and a server ISP thatinterfaces directly with the user under control from the master ISP. Inother embodiment, the data is transferred from one ISP to another ISP asthe client moves around the world to make the ISP in better position toservice the user be the one that delivers these services.

ISP 2370 includes Application Service Provider (ASP) 2372, whichprovides computer-based services to customers over a network. Softwareoffered using an ASP model is also sometimes called on-demand softwareor software as a service (SaaS). A simple form of providing access to aparticular application program (such as customer relationshipmanagement) is by using a standard protocol such as HTTP. Theapplication software resides on the vendor's system and is accessed byusers through a web browser using HTML, by special purpose clientsoftware provided by the vendor, or other remote interface such as athin client.

Services delivered over a wide geographical area often use cloudcomputing. Cloud computing is a style of computing in which dynamicallyscalable and often virtualized resources are provided as a service overthe Internet. Users do not need to be an expert in the technologyinfrastructure in the “cloud” that supports them. Cloud computing can bedivided in different services, such as Infrastructure as a Service(IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS).Cloud computing services often provide common business applicationsonline that are accessed from a web browser, while the software and dataare stored on the servers. The term cloud is used as a metaphor for theInternet, based on how the Internet is depicted in computer networkdiagrams and is an abstraction for the complex infrastructure itconceals.

Further, ISP 2370 includes a Game Processing Server (GPS) 2374 which isused by game clients to play single and multiplayer video games. Mostvideo games played over the Internet operate via a connection to a gameserver. Typically, games use a dedicated server application thatcollects data from players and distributes it to other players. This ismore efficient and effective than a peer-to-peer arrangement, but itrequires a separate server to host the server application. In anotherembodiment, the GPS establishes communication between the players andtheir respective game-playing devices exchange information withoutrelying on the centralized GPS.

Dedicated GPSs are servers which run independently of the client. Suchservers are usually run on dedicated hardware located in data centers,providing more bandwidth and dedicated processing power. Dedicatedservers are the preferred method of hosting game servers for mostPC-based multiplayer games. Massively multiplayer online games run ondedicated servers usually hosted by the software company that owns thegame title, allowing them to control and update content.

Broadcast Processing Server (BPS) 2376 distributes audio or videosignals to an audience. Broadcasting to a very narrow range of audienceis sometimes called narrowcasting. The final leg of broadcastdistribution is how the signal gets to the listener or viewer, and itmay come over the air as with a radio station or TV station to anantenna and receiver, or may come through cable TV or cable radio (or“wireless cable”) via the station or directly from a network. TheInternet may also bring either radio or TV to the recipient, especiallywith multicasting allowing the signal and bandwidth to be shared.Historically, broadcasts have been delimited by a geographic region,such as national broadcasts or regional broadcast. However, with theproliferation of fast internet, broadcasts are not defined bygeographies as the content can reach almost any country in the world.

Storage Service Provider (SSP) 2378 provides computer storage space andrelated management services. SSPs also offer periodic backup andarchiving. By offering storage as a service, users can order morestorage as required. Another major advantage is that SSPs include backupservices and users will not lose all their data if their computers' harddrives fail. Further, a plurality of SSPs can have total or partialcopies of the user data, allowing users to access data in an efficientway independently of where the user is located or the device being usedto access the data. For example, a user can access personal files in thehome computer, as well as in a mobile phone while the user is on themove.

Communications Provider 380 provides connectivity to the users. One kindof Communications Provider is an Internet Service Provider (ISP) whichoffers access to the Internet. The ISP connects its customers using adata transmission technology appropriate for delivering InternetProtocol datagrams, such as dial-up, DSL, cable modem, wireless ordedicated high-speed interconnects. The Communications Provider can alsoprovide messaging services, such as e-mail, instant messaging, and SMStexting. Another type of Communications Provider is the Network Serviceprovider (NSP) which sells bandwidth or network access by providingdirect backbone access to the Internet. Network service providers mayconsist of telecommunications companies, data carriers, wirelesscommunications providers, Internet service providers, cable televisionoperators offering high-speed Internet access, etc.

Data Exchange 2388 interconnects the several modules inside ISP 2370 andconnects these modules to users 2382 via network 2386. Data Exchange2388 can cover a small area where all the modules of ISP 2370 are inclose proximity, or can cover a large geographic area when the differentmodules are geographically dispersed. For example, Data Exchange 2388can include a fast Gigabit Ethernet (or faster) within a cabinet of adata center, or an intercontinental virtual area network (VLAN).

Users 2382 access the remote services with client device 2384, whichincludes at least a CPU, a display and I/O. The client device can be aPC, a mobile phone, a netbook, a PDA, etc. In one embodiment, ISP 2370recognizes the type of device used by the client and adjusts thecommunication method employed. In other cases, client devices use astandard communications method, such as html, to access ISP 2370.

Embodiments of the present invention may be practiced with variouscomputer system configurations including hand-held devices,microprocessor systems, microprocessor-based or programmable consumerelectronics, minicomputers, mainframe computers and the like. Theinvention can also be practiced in distributed computing environmentswhere tasks are performed by remote processing devices that are linkedthrough a wire-based or wireless network.

With the above embodiments in mind, it should be understood that theinvention can employ various computer-implemented operations involvingdata stored in computer systems. These operations are those requiringphysical manipulation of physical quantities. Any of the operationsdescribed herein that form part of the invention are useful machineoperations. The invention also relates to a device or an apparatus forperforming these operations. The apparatus can be specially constructedfor the required purpose, or the apparatus can be a general-purposecomputer selectively activated or configured by a computer programstored in the computer. In particular, various general-purpose machinescan be used with computer programs written in accordance with theteachings herein, or it may be more convenient to construct a morespecialized apparatus to perform the required operations.

The invention can also be embodied as computer readable code on acomputer readable medium. The computer readable medium is any datastorage device that can store data, which can thereafter be read by acomputer system. Examples of the computer readable medium include harddrives, network attached storage (NAS), read-only memory, random-accessmemory, CD-ROMs, CD-Rs, CD-RWs, magnetic tapes and other optical andnon-optical data storage devices. The computer readable medium caninclude computer readable tangible medium distributed over anetwork-coupled computer system so that the computer readable code isstored and executed in a distributed fashion.

Although the method operations were described in a specific order, itshould be understood that other housekeeping operations may be performedin between operations, or operations may be adjusted so that they occurat slightly different times, or may be distributed in a system whichallows the occurrence of the processing operations at various intervalsassociated with the processing, as long as the processing of the overlayoperations are performed in the desired way.

Although the foregoing invention has been described in some detail forpurposes of clarity of understanding, it will be apparent that certainchanges and modifications can be practiced within the scope of theappended claims. Accordingly, the present embodiments are to beconsidered as illustrative and not restrictive, and the invention is notto be limited to the details given herein, but may be modified withinthe scope and equivalents of the appended claims.

What is claimed is:
 1. A method for sharing recorded gameplay of a video game to a social network, comprising: executing, by a game console, a session of a video game; receiving, by the game console during the session of the video game, button input from a controller device that is interfaced with the game console; in response to receiving the button input, presenting, by the game console, a user interface configured to enable sharing of gameplay of the video game; receiving, by the game console via the user interface, one or more commands to share a video of at least a portion of the session of the video game to a social network, the video being recorded to a storage device during the session of the video game; sharing the video to the social network.
 2. The method of claim 1, wherein the button input is generated in response to triggering of a dedicated button for sharing gameplay on the controller device.
 3. The method of claim 2, wherein the triggering of the dedicated button for sharing gameplay on the controller device is defined by one of tapping, twice consecutively tapping, or holding, the dedicated button.
 4. The method of claim 1, wherein the video is defined from a buffered portion of the session of the video game that was recorded prior to the receiving of the button input by the game console.
 5. The method of claim 1, wherein the one or more commands to share the video include one or more commands to edit a start point and/or an end point of the video.
 6. The method of claim 1, wherein sharing the video to the social network includes sharing the video to a social graph of a user associated to the session of the video game.
 7. The method of claim 6, wherein the one or more commands to share the video include one or more commands to edit members of the social graph to whom the video will be shared.
 8. A method for sharing recorded gameplay of a video game to a social network, comprising: executing, by a game console, a session of a video game; receiving, by the game console during the session of the video game, first button input from a controller device that is interfaced with the game console; in response to receiving the first button input, recording a video of the session of the video game to a storage device; receiving, by the game console during the session of the video game, second button input from the controller device; in response to receiving the second button input, presenting, by the game console, a user interface configured to enable sharing of gameplay of the video game; receiving, by the game console via the user interface, one or more commands to share the video of the session of the video game to a social network; sharing the video to the social network.
 9. The method of claim 8, wherein the first button input and the second button input are generated in response to triggering of a dedicated button for sharing gameplay on the controller device.
 10. The method of claim 9, wherein the triggering of the dedicated button for sharing gameplay on the controller device is defined by one of tapping, twice consecutively tapping, or holding, the dedicated button.
 11. The method of claim 8, wherein the one or more commands to share the video include one or more commands to edit a start point and/or an end point of the video.
 12. The method of claim 8, wherein sharing the video to the social network includes sharing the video to a social graph of a user associated to the session of the video game.
 13. The method of claim 12, wherein the one or more commands to share the video include one or more commands to edit members of the social graph to whom the video will be shared.
 14. A method for sharing recorded gameplay of a video game to a social network, comprising: executing, by a cloud gaming server, a session of a video game; receiving, by the cloud gaming server during the session of the video game, button input from a controller device; in response to receiving the button input, presenting, by the cloud gaming server, a user interface configured to enable sharing of gameplay of the video game; receiving, by the cloud gaming server via the user interface, one or more commands to share a video of at least a portion of the session of the video game to a social network, the video being recorded to a storage device during the session of the video game; sharing the video to the social network.
 15. The method of claim 14, wherein the button input is generated in response to triggering of a dedicated button for sharing gameplay on the controller device.
 16. The method of claim 15, wherein the triggering of the dedicated button for sharing gameplay on the controller device is defined by one of tapping, twice consecutively tapping, or holding, the dedicated button.
 17. The method of claim 14, wherein the video is defined from a buffered portion of the session of the video game that was recorded prior to the receiving of the button input by the game console.
 18. The method of claim 14, wherein the one or more commands to share the video include one or more commands to edit a start point and/or an end point of the video.
 19. The method of claim 14, wherein sharing the video to the social network includes sharing the video to a social graph of a user associated to the session of the video game.
 20. The method of claim 19, wherein the one or more commands to share the video include one or more commands to edit members of the social graph to whom the video will be shared. 